23 lines
795 B
JavaScript
23 lines
795 B
JavaScript
|
|
import { db } from "../db.js";
|
||
|
|
import { INITIAL_DATA } from "../constants/initialData.js";
|
||
|
|
|
||
|
|
export const dataStore = {
|
||
|
|
async load(userId) {
|
||
|
|
const { rows } = await db.query("SELECT data FROM user_data WHERE user_id = $1", [userId]);
|
||
|
|
return rows[0] ? JSON.parse(rows[0].data) : structuredClone(INITIAL_DATA);
|
||
|
|
},
|
||
|
|
async save(userId, payload) {
|
||
|
|
await db.query(
|
||
|
|
"INSERT INTO user_data (user_id, data) VALUES ($1, $2) ON CONFLICT (user_id) DO UPDATE SET data = $2",
|
||
|
|
[userId, JSON.stringify(payload)]
|
||
|
|
);
|
||
|
|
return payload;
|
||
|
|
},
|
||
|
|
async reset(userId) {
|
||
|
|
await db.query(
|
||
|
|
"INSERT INTO user_data (user_id, data) VALUES ($1, $2) ON CONFLICT (user_id) DO UPDATE SET data = $2",
|
||
|
|
[userId, JSON.stringify(structuredClone(INITIAL_DATA))]
|
||
|
|
);
|
||
|
|
},
|
||
|
|
};
|