diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/AggregateQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/AggregateQueries.java index ba861d264..06a2ee97f 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/AggregateQueries.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/AggregateQueries.java @@ -19,6 +19,8 @@ package com.djrapitops.plan.db.sql.queries; import com.djrapitops.plan.db.access.Query; import com.djrapitops.plan.db.access.QueryAllStatement; import com.djrapitops.plan.db.access.QueryStatement; +import com.djrapitops.plan.db.sql.tables.CommandUseTable; +import com.djrapitops.plan.db.sql.tables.ServerTable; import com.djrapitops.plan.db.sql.tables.UserInfoTable; import com.djrapitops.plan.db.sql.tables.UsersTable; @@ -102,4 +104,33 @@ public class AggregateQueries { } }; } + + /** + * Count how many times commands have been used on a server. + * + * @param serverUUID Server UUID of the Plan server. + * @return Map: Lowercase used command - Count of use times. + */ + public static Query> commandUsageCounts(UUID serverUUID) { + String sql = "SELECT " + CommandUseTable.COMMAND + ", " + CommandUseTable.TIMES_USED + " FROM " + CommandUseTable.TABLE_NAME + + "WHERE " + CommandUseTable.SERVER_ID + "=" + ServerTable.STATEMENT_SELECT_SERVER_ID; + + return new QueryStatement>(sql, 5000) { + @Override + public void prepare(PreparedStatement statement) throws SQLException { + statement.setString(1, serverUUID.toString()); + } + + @Override + public Map processResults(ResultSet set) throws SQLException { + Map commandUse = new HashMap<>(); + while (set.next()) { + String cmd = set.getString(CommandUseTable.COMMAND).toLowerCase(); + int amountUsed = set.getInt(CommandUseTable.TIMES_USED); + commandUse.put(cmd, amountUsed); + } + return commandUse; + } + }; + } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/containers/ServerContainerQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/containers/ServerContainerQuery.java index e326ecc64..d8e07b59f 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/containers/ServerContainerQuery.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/queries/containers/ServerContainerQuery.java @@ -23,6 +23,7 @@ import com.djrapitops.plan.data.store.mutators.PlayersMutator; import com.djrapitops.plan.data.store.mutators.SessionsMutator; import com.djrapitops.plan.db.SQLDB; import com.djrapitops.plan.db.access.Query; +import com.djrapitops.plan.db.sql.queries.AggregateQueries; import com.djrapitops.plan.db.sql.queries.OptionalFetchQueries; import com.djrapitops.plan.system.cache.SessionCache; import com.djrapitops.plan.system.info.server.Server; @@ -74,7 +75,7 @@ public class ServerContainerQuery implements Query { return db.query(OptionalFetchQueries.fetchPeakPlayerCount(serverUUID, twoDaysAgo)).orElse(null); }); - container.putCachingSupplier(ServerKeys.COMMAND_USAGE, () -> db.getCommandUseTable().getCommandUse(serverUUID)); + container.putCachingSupplier(ServerKeys.COMMAND_USAGE, () -> db.query(AggregateQueries.commandUsageCounts(serverUUID))); container.putCachingSupplier(ServerKeys.WORLD_TIMES, () -> db.getWorldTimesTable().getWorldTimesOfServer(serverUUID)); // Calculating getters diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/CommandUseTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/CommandUseTable.java index 427017a03..d71c6cacd 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/CommandUseTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/CommandUseTable.java @@ -27,10 +27,7 @@ import com.djrapitops.plan.db.sql.parsing.Sql; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; import java.util.Optional; -import java.util.UUID; /** * Table that is in charge of storing command data. @@ -72,37 +69,6 @@ public class CommandUseTable extends Table { .toString(); } - /** - * Used to get all commands used in a server. - * - * @param serverUUID UUID of the server. - * @return command - times used Map - */ - public Map getCommandUse(UUID serverUUID) { - String sql = Select.from(tableName, - COMMAND, TIMES_USED) - .where(SERVER_ID + "=" + serverTable.statementSelectServerID) - .toString(); - - return query(new QueryStatement>(sql, 5000) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, serverUUID.toString()); - } - - @Override - public Map processResults(ResultSet set) throws SQLException { - Map commandUse = new HashMap<>(); - while (set.next()) { - String cmd = set.getString(COMMAND).toLowerCase(); - int amountUsed = set.getInt(TIMES_USED); - commandUse.put(cmd, amountUsed); - } - return commandUse; - } - }); - } - public void commandUsed(String command) { if (command.length() > 20) { return; diff --git a/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java b/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java index 04085b992..f84521b75 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/db/CommonDBTest.java @@ -31,6 +31,7 @@ import com.djrapitops.plan.data.time.WorldTimes; import com.djrapitops.plan.db.access.Query; import com.djrapitops.plan.db.access.transactions.*; import com.djrapitops.plan.db.patches.Patch; +import com.djrapitops.plan.db.sql.queries.AggregateQueries; import com.djrapitops.plan.db.sql.queries.LargeFetchQueries; import com.djrapitops.plan.db.sql.queries.LargeStoreQueries; import com.djrapitops.plan.db.sql.queries.OptionalFetchQueries; @@ -172,7 +173,7 @@ public abstract class CommonDBTest { commitTest(); - Map commandUse = db.getCommandUseTable().getCommandUse(serverUUID); + Map commandUse = db.query(AggregateQueries.commandUsageCounts(serverUUID)); assertEquals(expected, commandUse); for (int i = 0; i < 3; i++) { @@ -186,7 +187,7 @@ public abstract class CommonDBTest { expected.put("test", 3); expected.put("tp", 6); - commandUse = db.getCommandUseTable().getCommandUse(serverUUID); + commandUse = db.query(AggregateQueries.commandUsageCounts(serverUUID)); assertEquals(expected, commandUse); }