mcTelegramBot/database.js
2019-02-09 20:15:43 +03:00

78 lines
1.9 KiB
JavaScript

import sqlite from 'sqlite3'
import { currentTime } from './utility'
const db = new sqlite.Database('bot.db')
db.run(
`CREATE TABLE IF NOT EXISTS chats (
chatId INTEGER,
UNIQUE(chatId)
)`)
db.run(
`CREATE TABLE IF NOT EXISTS playerLogouts (
displayName STRING,
lastLogoutTime DATETIME,
UNIQUE(displayName)
)`)
db.run(
`CREATE TABLE IF NOT EXISTS playerKills (
displayName STRING,
entityName STRING,
killCount INTEGER,
UNIQUE(displayName, entityName)
)`)
const run = (sql, params) => new Promise((resolve, reject) => {
db.run(sql, params, (err) => {
if (err) {
reject(err)
} else {
resolve()
}
})
})
const get = (sql, params, column, defaultParam = null) => new Promise((resolve, reject) => {
db.get(sql, params, (err, row) => {
if (err) {
reject(err)
} else {
resolve(row ? row[column] : defaultParam)
}
})
})
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 playerLogouts (displayName, lastLogoutTime) VALUES (?, ?)`,
[ displayName, currentTime() ]
)
export const getLastLogoutTime = displayName => get(
`SELECT lastLogoutTime FROM playerLogouts WHERE displayName = ?`,
[ displayName ],
'lastLogoutTime',
null
)
export const saveKillCount = (displayName, entityName, killCount) => run(
`INSERT OR REPLACE INTO playerKills (displayName, entityName, killCount) VALUES (?, ?, ?)`,
[ displayName, entityName, killCount ]
)
export const getKillCount = (displayName, entityName) => get(
`SELECT killCount FROM playerKills WHERE displayName = ? AND entityName = ?`,
[ displayName, entityName ],
'killCount',
0
)