quit event, join event now fires only once in a while for the same player

This commit is contained in:
smsteel
2019-02-08 18:29:45 +03:00
parent a58e01f7e5
commit 387ee4cb43
5 changed files with 59 additions and 46 deletions

View File

@ -1,4 +1,5 @@
import sqlite from 'sqlite3'
import { currentTime } from './utility'
const db = new sqlite.Database('bot.db')
db.run(
@ -7,26 +8,45 @@ db.run(
UNIQUE(chatId)
)`)
export const saveChat = id => {
return new Promise((resolve, reject) => {
db.run(`INSERT OR IGNORE INTO chats (chatId) VALUES (?)`, [ id ], (err) => {
if (err) {
reject(err)
} else {
resolve({ id })
}
})
})
}
db.run(
`CREATE TABLE IF NOT EXISTS logouts (
displayName INTEGER,
lastLogoutTime DATETIME,
UNIQUE(displayName)
)`)
export const getChats = () => {
return new Promise((resolve, reject) => {
db.all('SELECT * FROM chats', [], (err, rows) => {
if (err) {
reject(err)
} else {
resolve(rows)
}
})
const run = (sql, params) => new Promise((resolve, reject) => {
db.run(sql, params, (err) => {
if (err) {
reject(err)
} else {
resolve()
}
})
}
})
export const saveChat = id => run(`INSERT OR IGNORE INTO chats (chatId) VALUES (?)`, [ id ])
export const getChats = () => new Promise((resolve, reject) => {
db.all('SELECT * FROM chats', [], (err, rows) => {
if (err) {
reject(err)
} else {
resolve(rows)
}
})
})
export const saveLogout = displayName => run(
`INSERT OR REPLACE INTO logouts (displayName, lastLogoutTime) VALUES (?, ?)`,
[ displayName, currentTime() ]
)
export const getLastLogoutTime = displayName => new Promise((resolve, reject) => {
db.get(`SELECT lastLogoutTime FROM logouts WHERE displayName = ?`, [ displayName ], (err, row) => {
if (err) {
reject(err)
} else {
console.log({ row })
resolve(row ? row.lastLogoutTime : null)
}
})
})