Files

58 lines
1.7 KiB
Python
Raw Permalink Normal View History

2026-05-31 18:43:18 +08:00
# database/schema.py
PRAGMA_FOREIGN_KEYS = "PRAGMA foreign_keys = ON;"
CREATE_TABLES_SQL = """
CREATE TABLE IF NOT EXISTS folders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
path TEXT UNIQUE NOT NULL,
parent_id INTEGER,
last_scanned TIMESTAMP,
FOREIGN KEY (parent_id) REFERENCES folders(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS files (
id INTEGER PRIMARY KEY AUTOINCREMENT,
folder_id INTEGER NOT NULL,
filename TEXT NOT NULL,
filepath TEXT UNIQUE NOT NULL,
size INTEGER NOT NULL,
mtime REAL NOT NULL,
rating INTEGER DEFAULT 0 CHECK (rating >= 0 AND rating <= 5),
favorite INTEGER DEFAULT 0 CHECK (favorite IN (0, 1)),
FOREIGN KEY (folder_id) REFERENCES folders(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS metadata (
file_id INTEGER PRIMARY KEY,
prompt_json TEXT,
workflow_json TEXT,
positive_prompt TEXT,
negative_prompt TEXT,
seed INTEGER,
model_name TEXT,
sampler TEXT,
steps INTEGER,
cfg REAL,
FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS file_tags (
file_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (file_id, tag_id),
FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
"""
CREATE_INDEXES_SQL = """
CREATE INDEX IF NOT EXISTS idx_folders_path ON folders(path);
CREATE INDEX IF NOT EXISTS idx_files_filepath ON files(filepath);
CREATE INDEX IF NOT EXISTS idx_files_folder_id ON files(folder_id);
CREATE INDEX IF NOT EXISTS idx_tags_name ON tags(name);
"""