SHA256
50 lines
2.0 KiB
SQL
50 lines
2.0 KiB
SQL
CREATE TABLE IF NOT EXISTS packages (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT UNIQUE NOT NULL,
|
|
pkgbuild_hash TEXT,
|
|
description TEXT DEFAULT '',
|
|
last_built_hash TEXT,
|
|
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'building', 'built', 'failed')),
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS builds (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
package_name TEXT NOT NULL,
|
|
target TEXT NOT NULL DEFAULT 'x86_64-semios-linux',
|
|
atombuild INTEGER NOT NULL DEFAULT 1,
|
|
status TEXT NOT NULL DEFAULT 'queued' CHECK(status IN ('queued', 'running', 'success', 'failed', 'cancelled')),
|
|
machine_id INTEGER,
|
|
trigger TEXT NOT NULL DEFAULT 'manual' CHECK(trigger IN ('manual', 'auto', 'hash-change')),
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
started_at DATETIME,
|
|
finished_at DATETIME,
|
|
log_path TEXT,
|
|
error_message TEXT,
|
|
FOREIGN KEY (machine_id) REFERENCES machines(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS machines (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL UNIQUE,
|
|
hostname TEXT NOT NULL,
|
|
port INTEGER NOT NULL DEFAULT 3001,
|
|
is_primary INTEGER NOT NULL DEFAULT 0,
|
|
status TEXT NOT NULL DEFAULT 'offline' CHECK(status IN ('online', 'offline', 'building')),
|
|
current_build_id INTEGER,
|
|
cpu_usage REAL DEFAULT 0.0,
|
|
memory_usage REAL DEFAULT 0.0,
|
|
memory_total_mb REAL DEFAULT 0.0,
|
|
disk_usage REAL DEFAULT 0.0,
|
|
last_heartbeat DATETIME,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (current_build_id) REFERENCES builds(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_builds_status ON builds(status);
|
|
CREATE INDEX IF NOT EXISTS idx_builds_package ON builds(package_name);
|
|
CREATE INDEX IF NOT EXISTS idx_builds_machine ON builds(machine_id);
|
|
CREATE INDEX IF NOT EXISTS idx_packages_status ON packages(status);
|
|
CREATE INDEX IF NOT EXISTS idx_machines_status ON machines(status);
|