chore: 🎉 initial commit

This commit is contained in:
UltraLionFr
2025-08-26 01:01:34 +02:00
parent bf6d61e5a3
commit 30cfbd73fc
27 changed files with 1341 additions and 0 deletions
+59
View File
@@ -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 };