Removed unused Session Query

This commit is contained in:
Rsl1122 2019-02-14 17:31:15 +02:00
parent adb2b865e1
commit 038d0354a0
5 changed files with 13 additions and 140 deletions

View File

@ -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

View File

@ -107,6 +107,6 @@ public class BackupCopyTransaction extends RemoveEverythingTransaction {
}
private void copySessionsWithKillAndWorldData() {
copy(LargeStoreQueries::storeAllSessionsWithKillAndWorldData, SessionQueries.fetchAllSessionsFlatWithKillAndWorldData());
copy(LargeStoreQueries::storeAllSessionsWithKillAndWorldData, SessionQueries.fetchAllSessions());
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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;

View File

@ -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));
}