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