68 lines
2.4 KiB
MySQL
68 lines
2.4 KiB
MySQL
|
|
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);
|