Fixing new replays not being findable due to a JVM segfault. Fixed versioning not propagating.
This commit is contained in:
@@ -18,7 +18,7 @@ import java.util.Objects;
|
||||
public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||
private final DbAccess _dbAccess;
|
||||
private final DateTimeFormatter _dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
private final DateTimeFormatter _dateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
|
||||
private final DateTimeFormatter _dateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
public DbGameHistoryDAO(DbAccess dbAccess) {
|
||||
_dbAccess = dbAccess;
|
||||
@@ -70,9 +70,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||
|
||||
try (org.sql2o.Connection conn = db.open()) {
|
||||
String sql = """
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason,
|
||||
win_recording_id, lose_recording_id, format_name, tournament,
|
||||
winner_deck_name, loser_deck_name, start_date, end_date
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||
FROM game_history
|
||||
WHERE winner = :playerName
|
||||
OR loser = :playerName
|
||||
@@ -100,9 +99,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||
|
||||
try (org.sql2o.Connection conn = db.open()) {
|
||||
String sql = """
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason,
|
||||
win_recording_id, lose_recording_id, format_name, tournament,
|
||||
winner_deck_name, loser_deck_name, start_date, end_date
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||
FROM game_history
|
||||
WHERE win_recording_id = :recordID
|
||||
OR lose_recording_id = :recordID;
|
||||
@@ -151,10 +149,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||
try (org.sql2o.Connection conn = db.open()) {
|
||||
String sql = """
|
||||
SELECT
|
||||
winner, winnerId, loser, loserId, win_reason, lose_reason,
|
||||
win_recording_id, lose_recording_id, format_name,
|
||||
tournament, winner_deck_name, loser_deck_name,
|
||||
start_date, end_date
|
||||
winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||
FROM game_history
|
||||
WHERE format_name LIKE :format
|
||||
ORDER BY end_date DESC
|
||||
@@ -307,8 +303,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||
|
||||
try (org.sql2o.Connection conn = db.open()) {
|
||||
String sql = """
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id, format_name,
|
||||
tournament, winner_deck_name, loser_deck_name, start_date, end_date
|
||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||
FROM game_history
|
||||
WHERE format_name = :formatName
|
||||
ORDER BY end_date DESC
|
||||
|
||||
@@ -22,6 +22,7 @@ import javax.xml.transform.stream.StreamResult;
|
||||
import java.io.*;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -109,8 +110,14 @@ public class GameRecorder {
|
||||
|
||||
private File getRecordingFileVersion1(String playerId, String gameId, ZonedDateTime startDate) {
|
||||
var gameReplayFolder = new File(AppConfig.getProperty("application.root"), "replay");
|
||||
var yearFolder = new File(gameReplayFolder, String.format("%04d", startDate.getYear()));
|
||||
var monthFolder = new File(yearFolder, String.format("%02d", startDate.getMonthValue()));
|
||||
//This dumbass formatting output is because anything that otherwise intersects with the
|
||||
// year subfield appears to trigger a JVM segfault in the guts of the java ecosystem.
|
||||
// Super-dumb. Don't touch.
|
||||
var year = startDate.format(DateTimeFormatter.ofPattern("yyyy"));
|
||||
var month = startDate.format(DateTimeFormatter.ofPattern("MM"));
|
||||
|
||||
var yearFolder = new File(gameReplayFolder, year);
|
||||
var monthFolder = new File(yearFolder, month);
|
||||
var playerReplayFolder = new File(monthFolder, playerId);
|
||||
return new File(playerReplayFolder, gameId + ".xml.gz");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user