Add top_player_kills_{n} and _value placeholders
top_player_kills_day_{n} top_player_kills_day_{n}_value top_player_kills_month_{n} top_player_kills_month_{n}_value top_player_kills_total_{n} top_player_kills_total_{n}_value top_player_kills_week_{n} top_player_kills_week_{n}_value Affects issues: - Close #2697
This commit is contained in:
parent
f41796f079
commit
1ec6fc913a
|
@ -214,6 +214,7 @@ public class ServerPlaceHolders implements Placeholders {
|
|||
List<TopCategoryQuery<Long>> queries = new ArrayList<>();
|
||||
queries.addAll(createCategoryQueriesForAllTimespans("playtime", (index, timespan, parameters) -> TopListQueries.fetchNthTop10PlaytimePlayerOn(getServerUUID(parameters), index, System.currentTimeMillis() - timespan, System.currentTimeMillis())));
|
||||
queries.addAll(createCategoryQueriesForAllTimespans("active_playtime", (index, timespan, parameters) -> TopListQueries.fetchNthTop10ActivePlaytimePlayerOn(getServerUUID(parameters), index, System.currentTimeMillis() - timespan, System.currentTimeMillis())));
|
||||
queries.addAll(createCategoryQueriesForAllTimespans("player_kills", (index, timespan, parameters) -> TopListQueries.fetchNthTop10PlayerKillCountOn(getServerUUID(parameters), index, System.currentTimeMillis() - timespan, System.currentTimeMillis())));
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
for (TopCategoryQuery<Long> query : queries) {
|
||||
|
|
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.storage.database.queries.analysis;
|
|||
|
||||
import com.djrapitops.plan.identification.ServerUUID;
|
||||
import com.djrapitops.plan.storage.database.queries.Query;
|
||||
import com.djrapitops.plan.storage.database.sql.tables.KillsTable;
|
||||
import com.djrapitops.plan.storage.database.sql.tables.ServerTable;
|
||||
import com.djrapitops.plan.storage.database.sql.tables.SessionsTable;
|
||||
import com.djrapitops.plan.storage.database.sql.tables.UsersTable;
|
||||
|
@ -40,7 +41,7 @@ public class TopListQueries {
|
|||
WHERE + SessionsTable.SERVER_ID + "=" + ServerTable.SELECT_SERVER_ID +
|
||||
AND + SessionsTable.SESSION_START + ">?" +
|
||||
AND + SessionsTable.SESSION_END + "<?" +
|
||||
GROUP_BY + "name" +
|
||||
GROUP_BY + UsersTable.USER_NAME +
|
||||
ORDER_BY + "playtime DESC" +
|
||||
LIMIT + "10" +
|
||||
OFFSET + "?";
|
||||
|
@ -57,7 +58,7 @@ public class TopListQueries {
|
|||
WHERE + SessionsTable.SERVER_ID + "=" + ServerTable.SELECT_SERVER_ID +
|
||||
AND + SessionsTable.SESSION_START + ">?" +
|
||||
AND + SessionsTable.SESSION_END + "<?" +
|
||||
GROUP_BY + "name" +
|
||||
GROUP_BY + UsersTable.USER_NAME +
|
||||
ORDER_BY + "active_playtime DESC" +
|
||||
LIMIT + "10" +
|
||||
OFFSET + "?";
|
||||
|
@ -66,6 +67,23 @@ public class TopListQueries {
|
|||
serverUUID, after, before, n - 1);
|
||||
}
|
||||
|
||||
public static Query<Optional<TopListEntry<Long>>> fetchNthTop10PlayerKillCountOn(ServerUUID serverUUID, int n, long after, long before) {
|
||||
String sql = SELECT + UsersTable.USER_NAME + ", " +
|
||||
"COUNT(1) as kills" +
|
||||
FROM + KillsTable.TABLE_NAME + " k" +
|
||||
INNER_JOIN + UsersTable.TABLE_NAME + " u on u." + UsersTable.USER_UUID + "=k." + KillsTable.KILLER_UUID +
|
||||
WHERE + KillsTable.SERVER_UUID + "=?" +
|
||||
AND + KillsTable.DATE + ">?" +
|
||||
AND + KillsTable.DATE + "<?" +
|
||||
GROUP_BY + UsersTable.USER_NAME +
|
||||
ORDER_BY + "kills DESC" +
|
||||
LIMIT + "10" +
|
||||
OFFSET + "?";
|
||||
|
||||
return db -> db.queryOptional(sql, set -> new TopListEntry<>(set.getString(UsersTable.USER_NAME), set.getLong("kills")),
|
||||
serverUUID, after, before, n - 1);
|
||||
}
|
||||
|
||||
public static class TopListEntry<T> {
|
||||
private final String playerName;
|
||||
private final T value;
|
||||
|
|
Loading…
Reference in New Issue