58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
import Database from "better-sqlite3";
|
|
import path from "path";
|
|
import fs from "fs";
|
|
const DATA_DIR = path.join(import.meta.dirname, "..", "data");
|
|
fs.mkdirSync(DATA_DIR, { recursive: true });
|
|
const db = new Database(path.join(DATA_DIR, "shadowdark.db"));
|
|
db.pragma("journal_mode = WAL");
|
|
db.pragma("foreign_keys = ON");
|
|
db.exec(`
|
|
CREATE TABLE IF NOT EXISTS campaigns (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
created_by TEXT DEFAULT '',
|
|
created_at TEXT DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS characters (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
campaign_id INTEGER NOT NULL REFERENCES campaigns(id) ON DELETE CASCADE,
|
|
created_by TEXT DEFAULT '',
|
|
name TEXT NOT NULL,
|
|
class TEXT NOT NULL DEFAULT 'Fighter',
|
|
ancestry TEXT NOT NULL DEFAULT 'Human',
|
|
level INTEGER NOT NULL DEFAULT 1,
|
|
xp INTEGER NOT NULL DEFAULT 0,
|
|
hp_current INTEGER NOT NULL DEFAULT 0,
|
|
hp_max INTEGER NOT NULL DEFAULT 0,
|
|
ac INTEGER NOT NULL DEFAULT 10,
|
|
alignment TEXT NOT NULL DEFAULT 'Neutral',
|
|
title TEXT DEFAULT '',
|
|
notes TEXT DEFAULT ''
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS character_stats (
|
|
character_id INTEGER NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
|
|
stat_name TEXT NOT NULL,
|
|
value INTEGER NOT NULL DEFAULT 10,
|
|
PRIMARY KEY (character_id, stat_name)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS character_gear (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
character_id INTEGER NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
type TEXT NOT NULL DEFAULT 'gear',
|
|
slot_count INTEGER NOT NULL DEFAULT 1,
|
|
properties TEXT DEFAULT '{}'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS character_talents (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
character_id INTEGER NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
description TEXT DEFAULT '',
|
|
effect TEXT DEFAULT '{}'
|
|
);
|
|
`);
|
|
export default db;
|