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 {
|
public class DbGameHistoryDAO implements GameHistoryDAO {
|
||||||
private final DbAccess _dbAccess;
|
private final DbAccess _dbAccess;
|
||||||
private final DateTimeFormatter _dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
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) {
|
public DbGameHistoryDAO(DbAccess dbAccess) {
|
||||||
_dbAccess = dbAccess;
|
_dbAccess = dbAccess;
|
||||||
@@ -70,9 +70,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
|||||||
|
|
||||||
try (org.sql2o.Connection conn = db.open()) {
|
try (org.sql2o.Connection conn = db.open()) {
|
||||||
String sql = """
|
String sql = """
|
||||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason,
|
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||||
win_recording_id, lose_recording_id, format_name, tournament,
|
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||||
winner_deck_name, loser_deck_name, start_date, end_date
|
|
||||||
FROM game_history
|
FROM game_history
|
||||||
WHERE winner = :playerName
|
WHERE winner = :playerName
|
||||||
OR loser = :playerName
|
OR loser = :playerName
|
||||||
@@ -100,9 +99,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
|||||||
|
|
||||||
try (org.sql2o.Connection conn = db.open()) {
|
try (org.sql2o.Connection conn = db.open()) {
|
||||||
String sql = """
|
String sql = """
|
||||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason,
|
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||||
win_recording_id, lose_recording_id, format_name, tournament,
|
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||||
winner_deck_name, loser_deck_name, start_date, end_date
|
|
||||||
FROM game_history
|
FROM game_history
|
||||||
WHERE win_recording_id = :recordID
|
WHERE win_recording_id = :recordID
|
||||||
OR lose_recording_id = :recordID;
|
OR lose_recording_id = :recordID;
|
||||||
@@ -151,10 +149,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
|||||||
try (org.sql2o.Connection conn = db.open()) {
|
try (org.sql2o.Connection conn = db.open()) {
|
||||||
String sql = """
|
String sql = """
|
||||||
SELECT
|
SELECT
|
||||||
winner, winnerId, loser, loserId, win_reason, lose_reason,
|
winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||||
win_recording_id, lose_recording_id, format_name,
|
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||||
tournament, winner_deck_name, loser_deck_name,
|
|
||||||
start_date, end_date
|
|
||||||
FROM game_history
|
FROM game_history
|
||||||
WHERE format_name LIKE :format
|
WHERE format_name LIKE :format
|
||||||
ORDER BY end_date DESC
|
ORDER BY end_date DESC
|
||||||
@@ -307,8 +303,8 @@ public class DbGameHistoryDAO implements GameHistoryDAO {
|
|||||||
|
|
||||||
try (org.sql2o.Connection conn = db.open()) {
|
try (org.sql2o.Connection conn = db.open()) {
|
||||||
String sql = """
|
String sql = """
|
||||||
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id, format_name,
|
SELECT winner, winnerId, loser, loserId, win_reason, lose_reason, win_recording_id, lose_recording_id,
|
||||||
tournament, winner_deck_name, loser_deck_name, start_date, end_date
|
format_name, tournament, winner_deck_name, loser_deck_name, start_date, end_date, replay_version
|
||||||
FROM game_history
|
FROM game_history
|
||||||
WHERE format_name = :formatName
|
WHERE format_name = :formatName
|
||||||
ORDER BY end_date DESC
|
ORDER BY end_date DESC
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import javax.xml.transform.stream.StreamResult;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -109,8 +110,14 @@ public class GameRecorder {
|
|||||||
|
|
||||||
private File getRecordingFileVersion1(String playerId, String gameId, ZonedDateTime startDate) {
|
private File getRecordingFileVersion1(String playerId, String gameId, ZonedDateTime startDate) {
|
||||||
var gameReplayFolder = new File(AppConfig.getProperty("application.root"), "replay");
|
var gameReplayFolder = new File(AppConfig.getProperty("application.root"), "replay");
|
||||||
var yearFolder = new File(gameReplayFolder, String.format("%04d", startDate.getYear()));
|
//This dumbass formatting output is because anything that otherwise intersects with the
|
||||||
var monthFolder = new File(yearFolder, String.format("%02d", startDate.getMonthValue()));
|
// 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);
|
var playerReplayFolder = new File(monthFolder, playerId);
|
||||||
return new File(playerReplayFolder, gameId + ".xml.gz");
|
return new File(playerReplayFolder, gameId + ".xml.gz");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user