Initial commit

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
dinlo
2026-05-31 18:43:18 +08:00
commit b553c957f3
30 changed files with 1879 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# 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);
"""