Spaces:
Sleeping
Sleeping
File size: 6,976 Bytes
ac5551d | 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | -- ============================================================
-- MLForge Model Zoo β SQLite Schema
-- Version: 1.0.0
-- ============================================================
PRAGMA journal_mode = WAL;
PRAGMA foreign_keys = ON;
-- ββ Models ββββββββββββββββββββββββββββββββββββββββββββββββ
CREATE TABLE IF NOT EXISTS models (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
variant TEXT,
task TEXT NOT NULL,
framework TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'hf',
provider TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
download_url TEXT, -- explicit download source URL
size INTEGER NOT NULL DEFAULT 0,
size_label TEXT NOT NULL DEFAULT '0B',
tags TEXT NOT NULL DEFAULT '[]', -- JSON array
hardware TEXT NOT NULL DEFAULT '[]', -- JSON array
status TEXT NOT NULL DEFAULT 'available',
downloaded INTEGER NOT NULL DEFAULT 0,
active_version TEXT,
local_path TEXT,
metrics TEXT NOT NULL DEFAULT '{}', -- JSON: latency, mAP, etc.
downloads INTEGER DEFAULT 0,
rating REAL,
liked INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- ββ Model Versions ββββββββββββββββββββββββββββββββββββββββ
CREATE TABLE IF NOT EXISTS model_versions (
version_id TEXT PRIMARY KEY,
model_id TEXT NOT NULL REFERENCES models(id) ON DELETE CASCADE,
version TEXT NOT NULL,
label TEXT NOT NULL DEFAULT 'Stable', -- Latest|Stable|Legacy
description TEXT,
metrics TEXT NOT NULL DEFAULT '{}', -- JSON: latency, mAP, etc.
local_path TEXT,
downloaded INTEGER NOT NULL DEFAULT 0,
release_date TEXT,
changelog TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- ββ Jobs βββββββββββββββββββββββββββββββββββββββββββββββββ-
CREATE TABLE IF NOT EXISTS jobs (
id TEXT PRIMARY KEY,
type TEXT NOT NULL, -- download|benchmark|sync
status TEXT NOT NULL DEFAULT 'queued', -- queued|running|completed|failed|cancelled
model_id TEXT REFERENCES models(id),
model_name TEXT,
progress REAL NOT NULL DEFAULT 0.0, -- 0.0β1.0
error TEXT,
meta TEXT NOT NULL DEFAULT '{}', -- JSON extra data
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
started_at TEXT,
ended_at TEXT
);
-- ββ Projects βββββββββββββββββββββββββββββββββββββββββββββ
CREATE TABLE IF NOT EXISTS projects (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
path TEXT NOT NULL,
created_at TEXT NOT NULL,
last_opened TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'idle'
);
-- ββ Session βββββββββββββββββββββββββββββββββββββββββββββββ
-- Stores the currently active project so backend services
-- (e.g. download manager) can link assets into the workspace.
CREATE TABLE IF NOT EXISTS session (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_projects_path ON projects(path);
-- ββ Audit Log βββββββββββββββββββββββββββββββββββββββββββββ
CREATE TABLE IF NOT EXISTS audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_type TEXT NOT NULL, -- api_request|download_start|download_ok|error|sync
model_id TEXT,
job_id TEXT,
payload TEXT NOT NULL DEFAULT '{}', -- JSON
level TEXT NOT NULL DEFAULT 'info',
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- ββ FTS (Full-Text Search) ββββββββββββββββββββββββββββββββ
CREATE VIRTUAL TABLE IF NOT EXISTS models_fts USING fts5(
id UNINDEXED,
name,
description,
tags,
provider,
task,
framework,
content='models',
content_rowid='rowid'
);
-- Triggers to keep FTS in sync
CREATE TRIGGER IF NOT EXISTS models_fts_insert AFTER INSERT ON models BEGIN
INSERT INTO models_fts(rowid, id, name, description, tags, provider, task, framework)
VALUES (new.rowid, new.id, new.name, new.description, new.tags, new.provider, new.task, new.framework);
END;
CREATE TRIGGER IF NOT EXISTS models_fts_delete BEFORE DELETE ON models BEGIN
DELETE FROM models_fts WHERE rowid = old.rowid;
END;
CREATE TRIGGER IF NOT EXISTS models_fts_update AFTER UPDATE ON models BEGIN
DELETE FROM models_fts WHERE rowid = old.rowid;
INSERT INTO models_fts(rowid, id, name, description, tags, provider, task, framework)
VALUES (new.rowid, new.id, new.name, new.description, new.tags, new.provider, new.task, new.framework);
END;
-- ββ Inference History ββββββββββββββββββββββββββββββββββββ
CREATE TABLE IF NOT EXISTS inference_history (
id TEXT PRIMARY KEY,
model_id TEXT NOT NULL REFERENCES models(id) ON DELETE CASCADE,
model_name TEXT NOT NULL,
adapter_type TEXT NOT NULL,
timestamp REAL NOT NULL DEFAULT (unixepoch('now')),
total_ms REAL NOT NULL DEFAULT 0.0,
quality_score REAL,
status TEXT NOT NULL DEFAULT 'ok',
request_snapshot TEXT NOT NULL DEFAULT '{}' -- JSON
);
CREATE INDEX IF NOT EXISTS idx_inference_model ON inference_history(model_id);
CREATE INDEX IF NOT EXISTS idx_inference_time ON inference_history(timestamp DESC);
-- ββ Indexes βββββββββββββββββββββββββββββββββββββββββββββββ
CREATE INDEX IF NOT EXISTS idx_models_task ON models(task);
CREATE INDEX IF NOT EXISTS idx_models_framework ON models(framework);
CREATE INDEX IF NOT EXISTS idx_models_source ON models(source);
CREATE INDEX IF NOT EXISTS idx_models_status ON models(status);
CREATE INDEX IF NOT EXISTS idx_models_downloads ON models(downloads DESC);
CREATE INDEX IF NOT EXISTS idx_jobs_status ON jobs(status);
CREATE INDEX IF NOT EXISTS idx_jobs_model ON jobs(model_id);
CREATE INDEX IF NOT EXISTS idx_audit_event ON audit_log(event_type);
CREATE INDEX IF NOT EXISTS idx_audit_time ON audit_log(created_at DESC);
|