mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-09-12 06:48:50 +02:00
Fixed backup failing if database contains bugged sessions
This commit is contained in:
parent
4291a94cc6
commit
68281fdc55
@ -721,19 +721,32 @@ public class SessionsTable extends UserIDTable {
|
|||||||
* @param savedSessions Sessions of Player in a Server in the db.
|
* @param savedSessions Sessions of Player in a Server in the db.
|
||||||
*/
|
*/
|
||||||
private void matchSessions(List<Session> sessions, List<Session> savedSessions) {
|
private void matchSessions(List<Session> sessions, List<Session> savedSessions) {
|
||||||
Map<Long, Session> sessionsByStart = sessions.stream().collect(Collectors.toMap(Session::getSessionStart, Function.identity()));
|
Map<Long, List<Session>> sessionsByStart = turnToMapByStart(sessions);
|
||||||
Map<Long, Session> savedSessionsByStart = savedSessions.stream().collect(Collectors.toMap(Session::getSessionStart, Function.identity()));
|
Map<Long, List<Session>> savedSessionsByStart = turnToMapByStart(savedSessions);
|
||||||
for (Map.Entry<Long, Session> sessionEntry : sessionsByStart.entrySet()) {
|
|
||||||
|
for (Map.Entry<Long, List<Session>> sessionEntry : sessionsByStart.entrySet()) {
|
||||||
long start = sessionEntry.getKey();
|
long start = sessionEntry.getKey();
|
||||||
Session savedSession = savedSessionsByStart.get(start);
|
if (!savedSessionsByStart.containsKey(start)) {
|
||||||
if (savedSession == null) {
|
|
||||||
throw new IllegalStateException("Some of the sessions being matched were not saved.");
|
throw new IllegalStateException("Some of the sessions being matched were not saved.");
|
||||||
}
|
}
|
||||||
Session session = sessionEntry.getValue();
|
Session savedSession = savedSessionsByStart.get(start).get(0);
|
||||||
session.setSessionID(savedSession.getSessionID());
|
sessionEntry.getValue().forEach(
|
||||||
|
session -> session.setSessionID(savedSession.getSessionID())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<Long, List<Session>> turnToMapByStart(List<Session> sessions) {
|
||||||
|
Map<Long, List<Session>> sessionsByStart = new HashMap<>();
|
||||||
|
for (Session session : sessions) {
|
||||||
|
long start = session.getSessionStart();
|
||||||
|
List<Session> sorted = sessionsByStart.getOrDefault(start, new ArrayList<>());
|
||||||
|
sorted.add(session);
|
||||||
|
sessionsByStart.put(start, sorted);
|
||||||
|
}
|
||||||
|
return sessionsByStart;
|
||||||
|
}
|
||||||
|
|
||||||
public void alterTableV15() {
|
public void alterTableV15() {
|
||||||
addColumns(Col.AFK_TIME + " bigint NOT NULL DEFAULT 0");
|
addColumns(Col.AFK_TIME + " bigint NOT NULL DEFAULT 0");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user