-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
116 lines (103 loc) · 3.61 KB
/
Copy pathschema.sql
File metadata and controls
116 lines (103 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS folders (
id TEXT PRIMARY KEY,
path TEXT NOT NULL UNIQUE,
recursive INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL,
last_scanned_at TEXT
);
CREATE TABLE IF NOT EXISTS images (
id TEXT PRIMARY KEY,
folder_id TEXT,
source_path TEXT NOT NULL UNIQUE,
filename TEXT NOT NULL,
extension TEXT NOT NULL,
file_size_bytes INTEGER NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
checksum TEXT,
import_status TEXT NOT NULL DEFAULT 'indexed',
created_at TEXT NOT NULL,
modified_at TEXT NOT NULL,
last_seen_at TEXT,
FOREIGN KEY (folder_id) REFERENCES folders(id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS image_versions (
id TEXT PRIMARY KEY,
image_id TEXT NOT NULL,
parent_version_id TEXT,
version_kind TEXT NOT NULL,
storage_path TEXT NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
file_size_bytes INTEGER,
is_current INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL,
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
FOREIGN KEY (parent_version_id) REFERENCES image_versions(id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS prompts (
id TEXT PRIMARY KEY,
image_id TEXT NOT NULL,
raw_prompt TEXT NOT NULL,
compiled_prompt_json TEXT,
text_model TEXT NOT NULL,
compile_mode TEXT NOT NULL,
created_at TEXT NOT NULL,
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS edit_jobs (
id TEXT PRIMARY KEY,
image_id TEXT NOT NULL,
base_version_id TEXT NOT NULL,
result_version_id TEXT,
prompt_id TEXT NOT NULL,
job_type TEXT NOT NULL,
job_status TEXT NOT NULL,
quality_mode TEXT NOT NULL,
source_kind TEXT NOT NULL,
crop_rect_json TEXT,
mask_path TEXT,
provider_name TEXT,
provider_base_url TEXT NOT NULL,
image_model TEXT NOT NULL,
text_model TEXT NOT NULL,
request_payload_json TEXT,
error_message TEXT,
started_at TEXT,
finished_at TEXT,
created_at TEXT NOT NULL,
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
FOREIGN KEY (base_version_id) REFERENCES image_versions(id) ON DELETE CASCADE,
FOREIGN KEY (result_version_id) REFERENCES image_versions(id) ON DELETE SET NULL,
FOREIGN KEY (prompt_id) REFERENCES prompts(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS tags (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS image_tags (
image_id TEXT NOT NULL,
tag_id TEXT NOT NULL,
created_at TEXT NOT NULL,
PRIMARY KEY (image_id, tag_id),
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS app_settings (
key TEXT PRIMARY KEY,
value_json TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_images_folder_id ON images(folder_id);
CREATE INDEX IF NOT EXISTS idx_images_source_path ON images(source_path);
CREATE INDEX IF NOT EXISTS idx_images_import_status ON images(import_status);
CREATE INDEX IF NOT EXISTS idx_versions_image_id ON image_versions(image_id);
CREATE INDEX IF NOT EXISTS idx_versions_parent_version_id ON image_versions(parent_version_id);
CREATE INDEX IF NOT EXISTS idx_versions_is_current ON image_versions(image_id, is_current);
CREATE INDEX IF NOT EXISTS idx_prompts_image_id ON prompts(image_id);
CREATE INDEX IF NOT EXISTS idx_prompts_created_at ON prompts(created_at);
CREATE INDEX IF NOT EXISTS idx_jobs_image_id ON edit_jobs(image_id);
CREATE INDEX IF NOT EXISTS idx_jobs_status ON edit_jobs(job_status);
CREATE INDEX IF NOT EXISTS idx_jobs_created_at ON edit_jobs(created_at);