Store users in the DB.
Properly reading from it is still not hooked up, at the moment.
This commit is contained in:
parent
71df29b27b
commit
161780c45f
|
@ -1,10 +1,11 @@
|
||||||
const { Pool } = require('pg')
|
const { Pool } = require('pg')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
const config = require('../../config')
|
||||||
const achievements = require('./achievements')
|
const achievements = require('./achievements')
|
||||||
const buyableItems = require('./buyableItems')
|
const buyableItems = require('./buyableItems')
|
||||||
const { quackStore, getChaos } = require('./quackstore')
|
const { quackStore, getChaos } = require('./quackstore')
|
||||||
|
|
||||||
const dbPool = new Pool()
|
const dbPool = new Pool(config.postgres)
|
||||||
|
|
||||||
let jokes
|
let jokes
|
||||||
let slackUsers
|
let slackUsers
|
||||||
|
@ -62,26 +63,26 @@ const parseOr = (parseable, fallback) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
let lastBackupTs = 0
|
let lastBackupTs = 0
|
||||||
const makeBackup = (force) => {
|
const makeBackup = force => {
|
||||||
const currentTs = Date.now()
|
const currentTs = Date.now()
|
||||||
if (lastBackupTs > (currentTs - 60000) && !force) {
|
if (lastBackupTs > (currentTs - 60000) && !force) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lastBackupTs = currentTs
|
lastBackupTs = currentTs
|
||||||
const fileName = saveDir + 'backups/' + saveFile + new Date().toLocaleString().replace(/[^a-z0-9]/gi, '_')
|
const cleanNowString = new Date().toLocaleString().replace(/[^a-z0-9]/gi, '_')
|
||||||
|
const fileName = `${saveDir}backups/${cleanNowString}-${saveFile}`
|
||||||
console.log(`Making backup file: ${fileName}`)
|
console.log(`Making backup file: ${fileName}`)
|
||||||
fs.writeFileSync(fileName, JSON.stringify(game))
|
fs.writeFileSync(fileName, JSON.stringify(game))
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveUser = async (userId, user, after) => {
|
const saveUser = async (userId, user, after) => {
|
||||||
return
|
|
||||||
const name = user.name || userId
|
const name = user.name || userId
|
||||||
if (after) {
|
if (after) {
|
||||||
console.log(`SAVING ${name} after ${after}`)
|
console.log(`SAVING ${name} after ${after}`)
|
||||||
} else {
|
} else {
|
||||||
console.log(`SAVING ${name}`, user)
|
console.log(`SAVING ${name}`, user)
|
||||||
}
|
}
|
||||||
await dbPool.query(`
|
return await dbPool.query(`
|
||||||
INSERT INTO hvacker_user (slack_id, name, data)
|
INSERT INTO hvacker_user (slack_id, name, data)
|
||||||
VALUES ($1, $2, $3)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT (slack_id) DO UPDATE
|
ON CONFLICT (slack_id) DO UPDATE
|
||||||
|
@ -90,10 +91,19 @@ const saveUser = async (userId, user, after) => {
|
||||||
.catch(console.error)
|
.catch(console.error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const saveAllUsers = () => Promise.all(
|
||||||
|
Object.entries(game.users).map(async ([userId, user]) =>
|
||||||
|
await saveUser(userId, user)
|
||||||
|
)
|
||||||
|
).then(() => {
|
||||||
|
console.log('All users updated in the DB')
|
||||||
|
})
|
||||||
|
|
||||||
let saves = 0
|
let saves = 0
|
||||||
const saveGame = (after, force = true, skipLog = false) => {
|
const saveGame = (after, force = true, skipLog = false) => {
|
||||||
if (saves % 20 === 0) {
|
if (saves % 20 === 0) {
|
||||||
makeBackup()
|
makeBackup()
|
||||||
|
saveAllUsers().catch(console.error)
|
||||||
}
|
}
|
||||||
saves += 1
|
saves += 1
|
||||||
if (force || saves % 10 === 0) {
|
if (force || saves % 10 === 0) {
|
||||||
|
@ -104,7 +114,6 @@ const saveGame = (after, force = true, skipLog = false) => {
|
||||||
console.log('SAVING GAME')
|
console.log('SAVING GAME')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Object.entries(game.users).forEach(([userId, user]) => saveUser(userId, user))
|
|
||||||
|
|
||||||
fs.writeFileSync(saveDir + saveFile, JSON.stringify(game, null, 2))
|
fs.writeFileSync(saveDir + saveFile, JSON.stringify(game, null, 2))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue