Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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);
|
||||
"""
|
||||
Reference in New Issue
Block a user