41 lines
1.3 KiB
SQL
41 lines
1.3 KiB
SQL
CREATE TABLE templates (
|
|
id TEXT PRIMARY KEY,
|
|
origin TEXT NOT NULL,
|
|
trust_status TEXT NOT NULL,
|
|
active_version TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE template_versions (
|
|
template_id TEXT NOT NULL REFERENCES templates(id) ON DELETE RESTRICT,
|
|
version TEXT NOT NULL,
|
|
schema_version INTEGER NOT NULL,
|
|
canonical_yaml TEXT NOT NULL,
|
|
digest TEXT NOT NULL,
|
|
game_id TEXT NOT NULL,
|
|
game_name TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
PRIMARY KEY (template_id, version),
|
|
UNIQUE (digest)
|
|
);
|
|
|
|
CREATE TABLE instances (
|
|
id TEXT PRIMARY KEY,
|
|
slug TEXT NOT NULL UNIQUE,
|
|
display_name TEXT NOT NULL,
|
|
template_id TEXT NOT NULL,
|
|
template_version TEXT NOT NULL,
|
|
template_digest TEXT NOT NULL,
|
|
revision INTEGER NOT NULL CHECK (revision >= 1),
|
|
lifecycle_state TEXT NOT NULL CHECK (lifecycle_state = 'draft'),
|
|
preview_json TEXT NOT NULL,
|
|
plan_digest TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
FOREIGN KEY (template_id, template_version) REFERENCES template_versions(template_id, version) ON DELETE RESTRICT
|
|
);
|
|
|
|
CREATE INDEX instances_template_idx ON instances(template_id, template_version);
|