mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-01 07:57:43 +02:00
Removed unused Session Query
This commit is contained in:
parent
adb2b865e1
commit
038d0354a0
@ -69,45 +69,6 @@ public class SessionQueries {
|
||||
" INNER JOIN " + WorldTimesTable.TABLE_NAME + " ON " + SessionsTable.TABLE_NAME + "." + SessionsTable.ID + "=" + WorldTimesTable.TABLE_NAME + "." + WorldTimesTable.SESSION_ID +
|
||||
" INNER JOIN " + WorldTable.TABLE_NAME + " ON " + WorldTimesTable.TABLE_NAME + "." + WorldTimesTable.WORLD_ID + "=" + WorldTable.TABLE_NAME + "." + WorldTable.ID;
|
||||
|
||||
/**
|
||||
* Query database for all Kill data.
|
||||
*
|
||||
* @return Map: Session ID - List of PlayerKills
|
||||
*/
|
||||
public static Query<Map<Integer, List<PlayerKill>>> fetchAllPlayerKillDataBySessionID() {
|
||||
String usersUUIDColumn = UsersTable.TABLE_NAME + "." + UsersTable.USER_UUID;
|
||||
String usersNameColumn = UsersTable.TABLE_NAME + "." + UsersTable.USER_NAME + " as victim_name";
|
||||
String sql = "SELECT " +
|
||||
KillsTable.SESSION_ID + ", " +
|
||||
KillsTable.DATE + ", " +
|
||||
KillsTable.WEAPON + ", " +
|
||||
KillsTable.VICTIM_UUID + ", " +
|
||||
usersNameColumn +
|
||||
" FROM " + KillsTable.TABLE_NAME +
|
||||
" INNER JOIN " + UsersTable.TABLE_NAME + " on " + usersUUIDColumn + "=" + KillsTable.VICTIM_UUID;
|
||||
|
||||
return new QueryAllStatement<Map<Integer, List<PlayerKill>>>(sql, 50000) {
|
||||
@Override
|
||||
public Map<Integer, List<PlayerKill>> processResults(ResultSet set) throws SQLException {
|
||||
Map<Integer, List<PlayerKill>> allPlayerKills = new HashMap<>();
|
||||
while (set.next()) {
|
||||
int sessionID = set.getInt(KillsTable.SESSION_ID);
|
||||
|
||||
List<PlayerKill> playerKills = allPlayerKills.getOrDefault(sessionID, new ArrayList<>());
|
||||
|
||||
UUID victim = UUID.fromString(set.getString(KillsTable.VICTIM_UUID));
|
||||
String victimName = set.getString("victim_name");
|
||||
long date = set.getLong(KillsTable.DATE);
|
||||
String weapon = set.getString(KillsTable.WEAPON);
|
||||
playerKills.add(new PlayerKill(victim, weapon, date, victimName));
|
||||
|
||||
allPlayerKills.put(sessionID, playerKills);
|
||||
}
|
||||
return allPlayerKills;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the database for Session data without kill, death or world data.
|
||||
*
|
||||
@ -155,26 +116,12 @@ public class SessionQueries {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the database for Session data with kill, death or world data.
|
||||
*
|
||||
* @return Multimap: Server UUID - (Player UUID - List of sessions)
|
||||
*/
|
||||
public static Query<Map<UUID, Map<UUID, List<Session>>>> fetchAllSessionsWithKillAndWorldData() {
|
||||
return db -> {
|
||||
Map<UUID, Map<UUID, List<Session>>> sessions = db.query(fetchAllSessionsWithoutKillOrWorldData());
|
||||
db.getKillsTable().addKillsToSessions(sessions);
|
||||
db.getWorldTimesTable().addWorldTimesToSessions(sessions);
|
||||
return sessions;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the database for Session data with kill, death or world data.
|
||||
*
|
||||
* @return List of sessions
|
||||
*/
|
||||
public static Query<List<Session>> fetchAllSessionsFlatWithKillAndWorldData() {
|
||||
public static Query<List<Session>> fetchAllSessions() {
|
||||
String sql = SELECT_SESSIONS_STATEMENT + " ORDER BY " + SessionsTable.SESSION_START + " DESC";
|
||||
return new QueryAllStatement<List<Session>>(sql, 50000) {
|
||||
@Override
|
||||
|
@ -107,6 +107,6 @@ public class BackupCopyTransaction extends RemoveEverythingTransaction {
|
||||
}
|
||||
|
||||
private void copySessionsWithKillAndWorldData() {
|
||||
copy(LargeStoreQueries::storeAllSessionsWithKillAndWorldData, SessionQueries.fetchAllSessionsFlatWithKillAndWorldData());
|
||||
copy(LargeStoreQueries::storeAllSessionsWithKillAndWorldData, SessionQueries.fetchAllSessions());
|
||||
}
|
||||
}
|
@ -21,7 +21,6 @@ import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.data.store.keys.SessionKeys;
|
||||
import com.djrapitops.plan.db.DBType;
|
||||
import com.djrapitops.plan.db.SQLDB;
|
||||
import com.djrapitops.plan.db.access.queries.objects.SessionQueries;
|
||||
import com.djrapitops.plan.db.patches.KillsOptimizationPatch;
|
||||
import com.djrapitops.plan.db.patches.KillsServerIDPatch;
|
||||
import com.djrapitops.plan.db.patches.Version10Patch;
|
||||
@ -30,8 +29,6 @@ import com.djrapitops.plan.db.sql.parsing.Sql;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -104,18 +101,4 @@ public class KillsTable extends Table {
|
||||
statement.addBatch();
|
||||
}
|
||||
}
|
||||
|
||||
public void addKillsToSessions(Map<UUID, Map<UUID, List<Session>>> map) {
|
||||
Map<Integer, List<PlayerKill>> playerKillsBySessionID = db.query(SessionQueries.fetchAllPlayerKillDataBySessionID());
|
||||
for (UUID serverUUID : map.keySet()) {
|
||||
for (List<Session> sessions : map.get(serverUUID).values()) {
|
||||
for (Session session : sessions) {
|
||||
List<PlayerKill> playerKills = playerKillsBySessionID.get(session.getUnsafe(SessionKeys.DB_ID));
|
||||
if (playerKills != null) {
|
||||
session.setPlayerKills(playerKills);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,10 +19,8 @@ package com.djrapitops.plan.db.sql.tables;
|
||||
import com.djrapitops.plan.data.container.Session;
|
||||
import com.djrapitops.plan.data.store.keys.SessionKeys;
|
||||
import com.djrapitops.plan.data.time.GMTimes;
|
||||
import com.djrapitops.plan.data.time.WorldTimes;
|
||||
import com.djrapitops.plan.db.DBType;
|
||||
import com.djrapitops.plan.db.SQLDB;
|
||||
import com.djrapitops.plan.db.access.QueryAllStatement;
|
||||
import com.djrapitops.plan.db.patches.Version10Patch;
|
||||
import com.djrapitops.plan.db.patches.WorldTimesOptimizationPatch;
|
||||
import com.djrapitops.plan.db.patches.WorldTimesSeverIDPatch;
|
||||
@ -31,9 +29,10 @@ import com.djrapitops.plan.db.sql.parsing.CreateTableParser;
|
||||
import com.djrapitops.plan.db.sql.parsing.Sql;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Table that is in charge of storing playtime data for each world in each GameMode.
|
||||
@ -124,61 +123,6 @@ public class WorldTimesTable extends Table {
|
||||
}
|
||||
}
|
||||
|
||||
public Map<Integer, WorldTimes> getAllWorldTimesBySessionID() {
|
||||
String worldIDColumn = WorldTable.TABLE_NAME + "." + WorldTable.ID;
|
||||
String worldNameColumn = WorldTable.TABLE_NAME + "." + WorldTable.NAME + " as world_name";
|
||||
String sql = "SELECT " +
|
||||
SESSION_ID + ", " +
|
||||
SURVIVAL + ", " +
|
||||
CREATIVE + ", " +
|
||||
ADVENTURE + ", " +
|
||||
SPECTATOR + ", " +
|
||||
worldNameColumn +
|
||||
" FROM " + TABLE_NAME +
|
||||
" INNER JOIN " + WorldTable.TABLE_NAME + " on " + worldIDColumn + "=" + WORLD_ID;
|
||||
|
||||
return query(new QueryAllStatement<Map<Integer, WorldTimes>>(sql, 50000) {
|
||||
@Override
|
||||
public Map<Integer, WorldTimes> processResults(ResultSet set) throws SQLException {
|
||||
String[] gms = GMTimes.getGMKeyArray();
|
||||
|
||||
Map<Integer, WorldTimes> worldTimes = new HashMap<>();
|
||||
while (set.next()) {
|
||||
int sessionID = set.getInt(SESSION_ID);
|
||||
|
||||
String worldName = set.getString("world_name");
|
||||
|
||||
Map<String, Long> gmMap = new HashMap<>();
|
||||
gmMap.put(gms[0], set.getLong(SURVIVAL));
|
||||
gmMap.put(gms[1], set.getLong(CREATIVE));
|
||||
gmMap.put(gms[2], set.getLong(ADVENTURE));
|
||||
gmMap.put(gms[3], set.getLong(SPECTATOR));
|
||||
GMTimes gmTimes = new GMTimes(gmMap);
|
||||
|
||||
WorldTimes worldTOfSession = worldTimes.getOrDefault(sessionID, new WorldTimes(new HashMap<>()));
|
||||
worldTOfSession.setGMTimesForWorld(worldName, gmTimes);
|
||||
worldTimes.put(sessionID, worldTOfSession);
|
||||
}
|
||||
return worldTimes;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void addWorldTimesToSessions(Map<UUID, Map<UUID, List<Session>>> map) {
|
||||
Map<Integer, WorldTimes> worldTimesBySessionID = getAllWorldTimesBySessionID();
|
||||
|
||||
for (Map.Entry<UUID, Map<UUID, List<Session>>> entry : map.entrySet()) {
|
||||
for (List<Session> sessions : entry.getValue().values()) {
|
||||
for (Session session : sessions) {
|
||||
WorldTimes worldTimes = worldTimesBySessionID.get(session.getUnsafe(SessionKeys.DB_ID));
|
||||
if (worldTimes != null) {
|
||||
session.setWorldTimes(worldTimes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
@ -503,7 +503,7 @@ public abstract class CommonDBTest {
|
||||
assertQueryIsEmpty(db, UserInfoQueries.fetchAllUserInformation());
|
||||
assertQueryIsEmpty(db, NicknameQueries.fetchAllNicknameData());
|
||||
assertQueryIsEmpty(db, GeoInfoQueries.fetchAllGeoInformation());
|
||||
assertQueryIsEmpty(db, SessionQueries.fetchAllSessionsWithoutKillOrWorldData());
|
||||
assertTrue(db.query(SessionQueries.fetchAllSessions()).isEmpty());
|
||||
assertQueryIsEmpty(db, LargeFetchQueries.fetchAllCommandUsageData());
|
||||
assertQueryIsEmpty(db, LargeFetchQueries.fetchAllWorldNames());
|
||||
assertQueryIsEmpty(db, LargeFetchQueries.fetchAllTPSData());
|
||||
@ -654,7 +654,7 @@ public abstract class CommonDBTest {
|
||||
assertQueryResultIsEqual(db, backup, UserInfoQueries.fetchAllUserInformation());
|
||||
assertQueryResultIsEqual(db, backup, NicknameQueries.fetchAllNicknameData());
|
||||
assertQueryResultIsEqual(db, backup, GeoInfoQueries.fetchAllGeoInformation());
|
||||
assertQueryResultIsEqual(db, backup, SessionQueries.fetchAllSessionsWithKillAndWorldData());
|
||||
assertQueryResultIsEqual(db, backup, SessionQueries.fetchAllSessions());
|
||||
assertQueryResultIsEqual(db, backup, LargeFetchQueries.fetchAllCommandUsageData());
|
||||
assertQueryResultIsEqual(db, backup, LargeFetchQueries.fetchAllWorldNames());
|
||||
assertQueryResultIsEqual(db, backup, LargeFetchQueries.fetchAllTPSData());
|
||||
@ -685,12 +685,11 @@ public abstract class CommonDBTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveAllWorldTimes() {
|
||||
public void worldTimesAreSavedWithAllSessionSave() {
|
||||
saveTwoWorlds();
|
||||
saveUserOne();
|
||||
WorldTimes worldTimes = createWorldTimes();
|
||||
|
||||
WorldTimesTable worldTimesTable = db.getWorldTimesTable();
|
||||
WorldTimes worldTimes = createWorldTimes();
|
||||
|
||||
Session session = createSession();
|
||||
session.setWorldTimes(worldTimes);
|
||||
@ -703,9 +702,9 @@ public abstract class CommonDBTest {
|
||||
}
|
||||
});
|
||||
|
||||
Map<Integer, WorldTimes> worldTimesBySessionID = worldTimesTable.getAllWorldTimesBySessionID();
|
||||
System.out.println(worldTimesBySessionID);
|
||||
assertEquals(worldTimes, worldTimesBySessionID.get(1));
|
||||
Map<UUID, WorldTimes> saved = db.query(WorldTimesQueries.fetchPlayerWorldTimesOnServers(playerUUID));
|
||||
WorldTimes savedWorldTimes = saved.get(serverUUID);
|
||||
assertEquals(worldTimes, savedWorldTimes);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -725,7 +724,7 @@ public abstract class CommonDBTest {
|
||||
}
|
||||
});
|
||||
|
||||
List<Session> allSessions = db.query(SessionQueries.fetchAllSessionsFlatWithKillAndWorldData());
|
||||
List<Session> allSessions = db.query(SessionQueries.fetchAllSessions());
|
||||
|
||||
assertEquals(worldTimes, allSessions.get(0).getUnsafe(SessionKeys.WORLD_TIMES));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user