Skip to content

Added sessiongraph#27

Merged
Owen1212055 merged 3 commits intoMCDiamondFire:masterfrom
Vatten:master
Feb 15, 2021
Merged

Added sessiongraph#27
Owen1212055 merged 3 commits intoMCDiamondFire:masterfrom
Vatten:master

Conversation

@Vatten
Copy link
Contributor

@Vatten Vatten commented Feb 15, 2021

No description provided.

@Vatten Vatten closed this Feb 15, 2021
@Vatten Vatten reopened this Feb 15, 2021
@Owen1212055
Copy link
Contributor

  
    @Override
    public String getName() {
        return "sessiongraph";
    }
    
    @Override
    public String[] getAliases() {
        return new String[]{"sessiongraph"};
    }
    
    @Override
    public HelpContext getHelpContext() {
        return new HelpContext()
                .description("Generates a graph of all sessions done in a specific day.")
                .category(CommandCategory.SUPPORT)
                .addArgument(
                        new HelpContextArgument()
                                .name("date")
                                .optional()
                );
    }
    
    @Override
    public ArgumentSet compileArguments() {
        return new ArgumentSet()
                .addArgument("date",
                        new SingleArgumentContainer<>(new DateArgument()).optional(null));
        
    }
    
    @Override
    public Permission getPermission() {
        return Permission.USER;
    }
    
    @Override
    public void run(CommandEvent event) {
        Date date;
        if (event.getArgument("date") == null) {
            date = Date.from(Instant.now());
        } else {
            date = event.getArgument("date");
        }
        
        java.sql.Date sqlDate = DateUtil.toSqlDate(date);
        
        new DatabaseQuery()
                .query(new BasicQuery("SELECT hour(time) AS time, COUNT(*) AS count\n" +
                        "FROM hypercube.support_sessions\n" +
                        "WHERE DATE(time) = ?\n" +
                        "GROUP BY hour(time)\n" +
                        "ORDER BY time",
                        (statement) -> {
                            statement.setDate(1, sqlDate);
                        })
                )
                .compile()
                .run((query) -> {
                    Map<GraphableEntry<?>, Integer> dates = new LinkedHashMap<>();
                    ResultSet set = query.getResult();
                    
                    for (int i = 0; i < 25; i++) {
                        boolean end = set.next();
                        String timedisplay = i + "";
                        if (i < 10) {
                            timedisplay = "0" + timedisplay;
                        }
                        dates.put(new StringEntry(timedisplay + ":00"), !end ? 0 : set.getInt("count"));
                    }
                    
                    event.getChannel().sendFile(new ChartGraphBuilder()
                            .setGraphName(String.format("Total sessions on %s", date))
                            .createGraph(dates)).queue();
                    
                });
        
    }

I updated and fixed your query and made the argument optional. I recommend naming it like dailysessions.

Also, you don't need to include it in aliases AND the main command name.
image

@Owen1212055 Owen1212055 merged commit a5b97c1 into MCDiamondFire:master Feb 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants