Artistry::Database
Constants
SCHEMA = " CREATE TABLE IF NOT EXISTS identity (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n created_at INTEGER NOT NULL DEFAULT (cast((julianday('now') - 2440587.5) * 86400000 as integer))\n );\n\n CREATE TABLE IF NOT EXISTS registry (\n code TEXT PRIMARY KEY,\n kind TEXT NOT NULL,\n plugin TEXT NOT NULL,\n description TEXT,\n symbol TEXT,\n version INTEGER NOT NULL DEFAULT 1,\n UNIQUE(plugin, kind)\n );\n\n CREATE TABLE IF NOT EXISTS schema (\n code TEXT NOT NULL,\n version INTEGER NOT NULL,\n json TEXT NOT NULL,\n hash TEXT NOT NULL,\n created_at INTEGER NOT NULL DEFAULT (cast((julianday('now') - 2440587.5) * 86400000 as integer)),\n PRIMARY KEY (code, version),\n FOREIGN KEY (code) REFERENCES registry(code)\n );\n\n CREATE TABLE IF NOT EXISTS artifact (\n id INTEGER PRIMARY KEY,\n code TEXT NOT NULL,\n version INTEGER NOT NULL,\n data JSON NOT NULL,\n hash TEXT NOT NULL,\n new_id INTEGER REFERENCES identity(id),\n updated_at INTEGER,\n FOREIGN KEY (id) REFERENCES identity(id),\n FOREIGN KEY (code, version) REFERENCES schema(code, version)\n );\n\n CREATE INDEX IF NOT EXISTS idx_artifact_code ON artifact(code);\n CREATE INDEX IF NOT EXISTS idx_artifact_new_id ON artifact(new_id);\n\n CREATE TABLE IF NOT EXISTS link (\n from_id INTEGER NOT NULL REFERENCES identity(id) ON DELETE CASCADE,\n to_id INTEGER NOT NULL REFERENCES identity(id) ON DELETE CASCADE,\n rel TEXT NOT NULL,\n data JSON,\n created_at INTEGER NOT NULL DEFAULT (cast((julianday('now') - 2440587.5) * 86400000 as integer)),\n PRIMARY KEY (from_id, to_id, rel)\n );\n\n CREATE TABLE IF NOT EXISTS tag (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at INTEGER NOT NULL DEFAULT (cast((julianday('now') - 2440587.5) * 86400000 as integer))\n );\n\n CREATE TABLE IF NOT EXISTS tagging (\n tag_id INTEGER NOT NULL REFERENCES tag(id) ON DELETE CASCADE,\n artifact_id INTEGER NOT NULL REFERENCES identity(id) ON DELETE CASCADE,\n created_at INTEGER NOT NULL DEFAULT (cast((julianday('now') - 2440587.5) * 86400000 as integer)),\n PRIMARY KEY (tag_id, artifact_id)\n );\n\n CREATE INDEX IF NOT EXISTS idx_tagging_artifact_id ON tagging(artifact_id);"
Class methods
ensure_schema(db : DB::Database) : Nil
Source