Erminig/schema.sql
2025-04-29 17:15:19 +02:00

68 lines
No EOL
2.4 KiB
SQL

CREATE TABLE IF NOT EXISTS upstreams (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
type TEXT CHECK(type IN ('http', 'github', 'sourceforge')) NOT NULL,
url TEXT, -- Base URL ou GitHub repo ou flux RSS
pattern TEXT DEFAULT NULL, -- Regex pour HTTP ou pattern GitHub si besoin
file TEXT, -- Optionnel : fichier final ex: gcc-${version}.tar.xz
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS versions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
upstream_id INTEGER NOT NULL,
version TEXT,
url TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (upstream_id) REFERENCES upstreams(id)
);
CREATE TABLE IF NOT EXISTS packages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE,
upstream_id INTEGER,
current_version_id INTEGER,
FOREIGN KEY (upstream_id) REFERENCES upstreams(id),
FOREIGN KEY (current_version_id) REFERENCES versions(id)
);
CREATE TABLE IF NOT EXISTS depends (
id INTEGER PRIMARY KEY AUTOINCREMENT,
package_id INTEGER NOT NULL,
depends_on INTEGER NOT NULL,
type TEXT CHECK(type IN ('runtime', 'build', 'check')),
FOREIGN KEY (package_id) REFERENCES packages(id),
FOREIGN KEY (depends_on) REFERENCES packages(id)
);
CREATE TABLE IF NOT EXISTS builds (
id INTEGER PRIMARY KEY AUTOINCREMENT,
package_id INTEGER NOT NULL,
version TEXT NOT NULL,
revision TEXT NOT NULL,
status TEXT CHECK(status IN ('success', 'fail', 'pending')),
built_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
log_path TEXT,
FOREIGN KEY (package_id) REFERENCES packages(id)
);
CREATE TABLE IF NOT EXISTS repo (
id INTEGER PRIMARY KEY AUTOINCREMENT,
package_id INTEGER NOT NULL,
version TEXT NOT NULL,
path TEXT,
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (package_id) REFERENCES packages(id)
);
CREATE TABLE IF NOT EXISTS notifications (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
version TEXT NOT NULL,
url TEXT NOT NULL,
status TEXT DEFAULT 'pending', -- 'pending', 'sent', 'failed'
last_attempt TIMESTAMP, -- Pour savoir quand on a tenté la dernière fois
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX idx_upstream_version ON versions(upstream_id, version);