Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 35s
- Migration saves: saveVersion pattern + migrateSave lazy (v1→v2) - Formule ADN rebalancée: log10 + clamp min 1 + cap bonus ×4 - Prestige Experience: modal fullscreen, preview ADN, stats run, best run - Arbre V2: 25 nœuds, 3 capstones, post-capstones repeatables (scaling par tranche) - Convergence évolutif Alpha→Omega (tier system) - Reset arbre: 1 gratuit/prestige, payant linéaire au-delà - Milestones prestige: 8 paliers (1→100), cosmétiques exclusifs, bonus gameplay - balance.ts: constantes centralisées pour playtest - 136 tests green, 0 regression
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
const AbstractManager = require("./AbstractManager");
|
|
|
|
class GameSaveManager extends AbstractManager {
|
|
constructor() {
|
|
super({ table: "game_saves" });
|
|
}
|
|
|
|
async getByUserId(userId) {
|
|
const [rows] = await this.database.query(
|
|
`SELECT * FROM ${this.table} WHERE user_id = ?`,
|
|
[userId]
|
|
);
|
|
return rows[0] ?? null;
|
|
}
|
|
|
|
async upsert(userId, gameState, metadata) {
|
|
const { lifetimeTadpoles, prestigeCount, playTimeSeconds } = metadata;
|
|
const saveVersion = gameState.saveVersion ?? 1;
|
|
const gameStateJson = JSON.stringify(gameState);
|
|
|
|
const [result] = await this.database.query(
|
|
`INSERT INTO ${this.table} (user_id, game_state, save_version, lifetime_tadpoles, prestige_count, play_time_seconds)
|
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
game_state = VALUES(game_state),
|
|
save_version = VALUES(save_version),
|
|
lifetime_tadpoles = VALUES(lifetime_tadpoles),
|
|
prestige_count = VALUES(prestige_count),
|
|
play_time_seconds = VALUES(play_time_seconds),
|
|
last_save = CURRENT_TIMESTAMP`,
|
|
[userId, gameStateJson, saveVersion, lifetimeTadpoles, prestigeCount, playTimeSeconds]
|
|
);
|
|
|
|
return result.affectedRows;
|
|
}
|
|
|
|
async delete(userId) {
|
|
await this.database.query(
|
|
`DELETE FROM ${this.table} WHERE user_id = ?`,
|
|
[userId]
|
|
);
|
|
}
|
|
}
|
|
|
|
module.exports = GameSaveManager;
|