chore: 🎉 initial commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const initSqlJs = require("sql.js");
|
||||
|
||||
const dbPath = path.join(__dirname, "../tickets.db");
|
||||
|
||||
let db;
|
||||
|
||||
async function initDB() {
|
||||
const SQL = await initSqlJs();
|
||||
|
||||
if (fs.existsSync(dbPath)) {
|
||||
const fileBuffer = fs.readFileSync(dbPath);
|
||||
db = new SQL.Database(fileBuffer);
|
||||
} else {
|
||||
db = new SQL.Database();
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS tickets (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
userId TEXT NOT NULL,
|
||||
channelId TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'open'
|
||||
)
|
||||
`);
|
||||
saveDB();
|
||||
}
|
||||
}
|
||||
|
||||
function saveDB() {
|
||||
const data = db.export();
|
||||
fs.writeFileSync(dbPath, Buffer.from(data));
|
||||
}
|
||||
|
||||
function createTicket(userId, channelId) {
|
||||
db.run(
|
||||
"INSERT INTO tickets (userId, channelId, status) VALUES (?, ?, 'open')",
|
||||
[String(userId), String(channelId)]
|
||||
);
|
||||
saveDB();
|
||||
}
|
||||
|
||||
function getTicketByChannel(channelId) {
|
||||
const stmt = db.prepare(
|
||||
"SELECT * FROM tickets WHERE channelId = ? AND status = 'open'"
|
||||
);
|
||||
stmt.bind([String(channelId)]);
|
||||
const row = stmt.step() ? stmt.getAsObject() : null;
|
||||
stmt.free();
|
||||
return row;
|
||||
}
|
||||
|
||||
function closeTicket(channelId) {
|
||||
db.run("UPDATE tickets SET status = 'closed' WHERE channelId = ?", [
|
||||
String(channelId),
|
||||
]);
|
||||
saveDB();
|
||||
}
|
||||
|
||||
module.exports = { initDB, createTicket, getTicketByChannel, closeTicket };
|
||||
Reference in New Issue
Block a user