Add SQLite schema: admins, ghosts, sets, set_ghosts
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
import Database from "better-sqlite3";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
import path from "path";
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
const DATA_DIR = path.join(__dirname, "data");
|
||||||
|
fs.mkdirSync(DATA_DIR, { recursive: true });
|
||||||
|
|
||||||
|
const db = new Database(path.join(DATA_DIR, "spectre.db"));
|
||||||
|
db.pragma("journal_mode = WAL");
|
||||||
|
|
||||||
|
db.exec(`
|
||||||
|
CREATE TABLE IF NOT EXISTS admins (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
username TEXT UNIQUE NOT NULL,
|
||||||
|
pw_hash TEXT NOT NULL,
|
||||||
|
created TEXT NOT NULL DEFAULT (datetime('now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS ghosts (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
gif_file TEXT NOT NULL, -- filename under /uploads
|
||||||
|
rarity TEXT NOT NULL DEFAULT 'common', -- common | rare | legendary
|
||||||
|
scale REAL NOT NULL DEFAULT 1.0, -- billboard size multiplier
|
||||||
|
enabled INTEGER NOT NULL DEFAULT 1,
|
||||||
|
created TEXT NOT NULL DEFAULT (datetime('now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS sets (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
code TEXT UNIQUE NOT NULL, -- the QR payload that unlocks this set
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
enabled INTEGER NOT NULL DEFAULT 1,
|
||||||
|
created TEXT NOT NULL DEFAULT (datetime('now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
-- which ghosts a given set can spawn (many-to-many)
|
||||||
|
CREATE TABLE IF NOT EXISTS set_ghosts (
|
||||||
|
set_id INTEGER NOT NULL REFERENCES sets(id) ON DELETE CASCADE,
|
||||||
|
ghost_id INTEGER NOT NULL REFERENCES ghosts(id) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY (set_id, ghost_id)
|
||||||
|
);
|
||||||
|
`);
|
||||||
|
|
||||||
|
export default db;
|
||||||
Reference in New Issue
Block a user