CREATE TABLE IF NOT EXISTS menu_definitions (
menu_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
popup_position TEXT NOT NULL,
offset_x INTEGER NOT NULL,
offset_y INTEGER NOT NULL,
pause_game INTEGER NOT NULL CHECK (pause_game IN (0, 1)),
background_color TEXT NOT NULL,
controls_json TEXT NOT NULL,
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS menu_definitions_updated_idx
ON menu_definitions(updated_at DESC, menu_id);
CREATE TABLE IF NOT EXISTS menu_image_assets (
asset_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
mime_type TEXT NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
sha256 TEXT NOT NULL,
content BLOB NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS menu_image_assets_search_idx
ON menu_image_assets(name, created_at DESC);
CREATE TABLE IF NOT EXISTS menu_definitions (
menu_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
popup_position TEXT NOT NULL,
offset_x INTEGER NOT NULL,
offset_y INTEGER NOT NULL,
pause_game INTEGER NOT NULL CHECK (pause_game IN (0, 1)),
background_color TEXT NOT NULL,
controls_json TEXT NOT NULL,
revision INTEGER NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS menu_definitions_updated_idx
ON menu_definitions(updated_at DESC, menu_id);
CREATE TABLE IF NOT EXISTS menu_image_assets (
asset_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
mime_type TEXT NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
sha256 TEXT NOT NULL,
content BLOB NOT NULL,
created_by TEXT NOT NULL,
created_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS menu_image_assets_search_idx
ON menu_image_assets(name, created_at DESC);