finish world initialization, set up init on startup and on shutdown, move all models to main directory

This commit is contained in:
lbenedar
2026-04-24 18:04:35 +03:00
parent 07025afefc
commit fd65631be1
125 changed files with 1534 additions and 2802 deletions

View File

@@ -48,12 +48,14 @@ CREATE TABLE IF NOT EXISTS game_to_systems (
FOREIGN KEY (system_id) REFERENCES system(id) ON DELETE CASCADE
);
CREATE INDEX idx_game_to_systems_system_id ON game_to_systems(system_id);
CREATE TRIGGER tr_delete_game_to_systems_system
AFTER DELETE ON game_to_systems
FOR EACH ROW
BEGIN
DELETE FROM system
WHERE id = OLD.id
WHERE id = OLD.system_id
AND NOT EXISTS (SELECT 1 FROM game_to_systems WHERE system_id = OLD.system_id);
END;
@@ -88,17 +90,38 @@ CREATE TABLE IF NOT EXISTS game_to_module (
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
CREATE INDEX idx_game_to_module_module_id ON game_to_module(module_id);
CREATE TRIGGER tr_delete_game_to_module_module
AFTER DELETE ON game_to_module
FOR EACH ROW
BEGIN
DELETE FROM module
WHERE id = OLD.id
WHERE id = OLD.module_id
AND NOT EXISTS (SELECT 1 FROM game_to_module WHERE module_id = OLD.module_id);
END;
ALTER TABLE package_warnings ADD COLUMN game_id INTEGER REFERENCES game(id) ON DELETE CASCADE;
ALTER TABLE pack ADD COLUMN game_id INTEGER REFERENCES game(id) ON DELETE CASCADE;
CREATE TABLE IF NOT EXISTS game_to_pack (
game_id INTEGER,
pack_id TEXT,
PRIMARY KEY (game_id, pack_id),
FOREIGN KEY (pack_id) REFERENCES pack(id) ON DELETE CASCADE,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
CREATE INDEX idx_game_to_pack_pack_id ON game_to_pack(pack_id);
CREATE TRIGGER tr_delete_game_to_pack_pack
AFTER DELETE ON game_to_pack
FOR EACH ROW
BEGIN
DELETE FROM pack
WHERE id = OLD.pack_id
AND NOT EXISTS (SELECT 1 FROM game_to_pack WHERE pack_id = OLD.pack_id);
END;
CREATE TABLE IF NOT EXISTS message (
id TEXT PRIMARY KEY,
@@ -113,6 +136,9 @@ CREATE TABLE IF NOT EXISTS message (
flavor VARCHAR(128) NOT NULL,
sound VARCHAR(128) NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -170,6 +196,9 @@ CREATE TABLE IF NOT EXISTS combat (
sort INTEGER NOT NULL,
active INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -199,6 +228,9 @@ CREATE TABLE IF NOT EXISTS combatant (
hidden BOOLEAN NOT NULL,
defeated BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
combat_id TEXT,
FOREIGN KEY (combat_id) REFERENCES combat(id) ON DELETE CASCADE
);
@@ -220,6 +252,9 @@ CREATE TABLE IF NOT EXISTS card_deck (
sort INTEGER NOT NULL,
display_count BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -253,6 +288,9 @@ CREATE TABLE IF NOT EXISTS card (
sort INTEGER NOT NULL,
drawn BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
card_deck_id TEXT,
FOREIGN KEY (card_deck_id) REFERENCES card_deck(id) ON DELETE CASCADE
);
@@ -291,6 +329,9 @@ CREATE TABLE IF NOT EXISTS user (
pronouns VARCHAR(128) NOT NULL,
role INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -320,6 +361,9 @@ CREATE TABLE IF NOT EXISTS macro (
folder VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -339,6 +383,9 @@ CREATE TABLE IF NOT EXISTS world_folder (
color VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -355,6 +402,9 @@ CREATE TABLE IF NOT EXISTS item (
folder VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -369,6 +419,9 @@ CREATE TABLE IF NOT EXISTS setting (
key_ VARCHAR(128) NOT NULL,
value VARCHAR(128) NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -382,6 +435,9 @@ CREATE TABLE IF NOT EXISTS journal (
name VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -394,6 +450,9 @@ CREATE TABLE IF NOT EXISTS journal_page (
src VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
journal_id TEXT,
FOREIGN KEY (journal_id) REFERENCES journal(id) ON DELETE CASCADE
);
@@ -430,7 +489,6 @@ CREATE TABLE IF NOT EXISTS journal_page_video (
);
ALTER TABLE stats ADD COLUMN journal_page_id TEXT REFERENCES journal_page(id) ON DELETE CASCADE;
CREATE UNIQUE INDEX idx_stats_journal_page_id ON stats(journal_page_id);
ALTER TABLE ownership_string ADD COLUMN journal_page_id TEXT REFERENCES journal_page(id) ON DELETE CASCADE;
ALTER TABLE ownership_string ADD COLUMN journal_id TEXT REFERENCES journal(id) ON DELETE CASCADE;
@@ -447,6 +505,9 @@ CREATE TABLE IF NOT EXISTS table_ (
replacement BOOLEAN NOT NULL,
display_roll BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -465,6 +526,9 @@ CREATE TABLE IF NOT EXISTS table_result (
weight INTEGER NOT NULL,
drawn BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
table_id TEXT,
FOREIGN KEY (table_id) REFERENCES table_(id) ON DELETE CASCADE
);
@@ -495,6 +559,9 @@ CREATE TABLE IF NOT EXISTS playlist (
sort INTEGER NOT NULL,
playing BOOLEAN NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);
@@ -517,6 +584,9 @@ CREATE TABLE IF NOT EXISTS sound (
volume REAL NOT NULL,
paused_time REAL NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
playlist_id TEXT,
FOREIGN KEY (playlist_id) REFERENCES playlist(id) ON DELETE CASCADE
);
@@ -530,6 +600,9 @@ CREATE TABLE IF NOT EXISTS actor (
folder VARCHAR(128) NOT NULL,
sort INTEGER NOT NULL,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now')),
game_id INTEGER,
FOREIGN KEY (game_id) REFERENCES game(id) ON DELETE CASCADE
);