| 1 |
|
| 2 |
|
| 3 |
CREATE TABLE ota_build_configs ( |
| 4 |
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
| 5 |
app_id UUID NOT NULL REFERENCES sync_apps(id) ON DELETE CASCADE, |
| 6 |
repo_id UUID NOT NULL REFERENCES git_repos(id) ON DELETE CASCADE, |
| 7 |
build_command TEXT NOT NULL, |
| 8 |
artifact_path TEXT NOT NULL, |
| 9 |
signing_key_path TEXT NOT NULL DEFAULT '', |
| 10 |
targets TEXT[] NOT NULL DEFAULT ARRAY['linux/x86_64', 'linux/aarch64'], |
| 11 |
enabled BOOLEAN NOT NULL DEFAULT true, |
| 12 |
created_at TIMESTAMPTZ NOT NULL DEFAULT now(), |
| 13 |
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), |
| 14 |
UNIQUE(app_id) |
| 15 |
); |
| 16 |
|
| 17 |
CREATE TABLE ota_builds ( |
| 18 |
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
| 19 |
config_id UUID NOT NULL REFERENCES ota_build_configs(id) ON DELETE CASCADE, |
| 20 |
app_id UUID NOT NULL REFERENCES sync_apps(id) ON DELETE CASCADE, |
| 21 |
version TEXT NOT NULL, |
| 22 |
tag TEXT NOT NULL, |
| 23 |
status TEXT NOT NULL DEFAULT 'pending', |
| 24 |
started_at TIMESTAMPTZ, |
| 25 |
finished_at TIMESTAMPTZ, |
| 26 |
log TEXT NOT NULL DEFAULT '', |
| 27 |
error_message TEXT, |
| 28 |
release_id UUID REFERENCES ota_releases(id) ON DELETE SET NULL, |
| 29 |
triggered_by TEXT NOT NULL DEFAULT 'tag', |
| 30 |
created_at TIMESTAMPTZ NOT NULL DEFAULT now() |
| 31 |
); |
| 32 |
|
| 33 |
CREATE INDEX idx_ota_build_configs_repo_id ON ota_build_configs(repo_id); |
| 34 |
CREATE INDEX idx_ota_builds_config_id ON ota_builds(config_id); |
| 35 |
CREATE INDEX idx_ota_builds_status ON ota_builds(status); |
| 36 |
CREATE INDEX idx_ota_builds_created_at ON ota_builds(created_at DESC); |
| 37 |
|