38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import Database from 'better-sqlite3';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const dbPath = process.env.SANDBOX_DB_PATH || path.resolve(__dirname, '../sandbox/server/sandbox.db');
|
|
const db = new Database(dbPath);
|
|
|
|
db.pragma('journal_mode = WAL');
|
|
db.pragma('foreign_keys = ON');
|
|
|
|
db.exec(`
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id TEXT PRIMARY KEY,
|
|
username TEXT UNIQUE NOT NULL,
|
|
email TEXT UNIQUE,
|
|
password_hash TEXT,
|
|
discord_id TEXT UNIQUE,
|
|
global_name TEXT,
|
|
avatar TEXT,
|
|
created_at TEXT DEFAULT (datetime('now')),
|
|
updated_at TEXT DEFAULT (datetime('now'))
|
|
);
|
|
`);
|
|
|
|
const migrations = [
|
|
"ALTER TABLE users ADD COLUMN email TEXT",
|
|
"ALTER TABLE users ADD COLUMN discord_id TEXT UNIQUE",
|
|
"ALTER TABLE users ADD COLUMN global_name TEXT",
|
|
"ALTER TABLE users ADD COLUMN avatar TEXT",
|
|
"ALTER TABLE users ADD COLUMN updated_at TEXT DEFAULT (datetime('now'))",
|
|
];
|
|
for (const sql of migrations) {
|
|
try { db.exec(sql); } catch {}
|
|
}
|
|
|
|
export default db;
|