OXYGENHUB
# adbc38e7ea09 oxygenhub / crates / hub / migrations / 0050_reports.sql
1.7 KiB · SQL · last changed Reports: keep a job's report file by file, index its declaration, metrics and files 25 days ago source blame history raw
a36bab6b Andy McCall ↶ 1
-- Reports (oxygenhub#127, docs/reports.md): a directory a Flow job writes
2
-- with report.toml at its top. Its files are blobs of the repository and
3
-- its manifest is the job's artifact of that name; these tables index it
4
-- for the Reports tab, its history and checks, and name every file blob
5
-- so garbage collection keeps it.
6
CREATE TABLE reports (
7
    id          INTEGER PRIMARY KEY,
8
    repo_id     INTEGER NOT NULL REFERENCES repositories(id) ON DELETE CASCADE,
9
    name        TEXT NOT NULL,
10
    kind        TEXT NOT NULL,
11
    title       TEXT NOT NULL,
12
    summary     TEXT NOT NULL,
13
    context     TEXT NOT NULL,
14
    run_id      INTEGER REFERENCES flow_runs(id) ON DELETE CASCADE,
15
    job_id      INTEGER,
16
    run_number  INTEGER,
17
    job         TEXT NOT NULL,
18
    bookmark    TEXT NOT NULL,
19
    state       TEXT NOT NULL,
20
    manifest    TEXT,
21
    files       INTEGER NOT NULL,
22
    bytes       INTEGER NOT NULL,
23
    created_ms  INTEGER NOT NULL
24
);
25
CREATE UNIQUE INDEX reports_job ON reports (job_id, name);
26
CREATE INDEX reports_history ON reports (repo_id, name, bookmark, created_ms);
27
CREATE TABLE report_metrics (
28
    report_id   INTEGER NOT NULL REFERENCES reports(id) ON DELETE CASCADE,
29
    key         TEXT NOT NULL,
30
    value       REAL NOT NULL,
31
    unit        TEXT NOT NULL,
32
    better      TEXT NOT NULL,
33
    fail_above  REAL,
34
    fail_below  REAL,
35
    PRIMARY KEY (report_id, key)
36
);
37
CREATE TABLE report_files (
38
    report_id   INTEGER NOT NULL REFERENCES reports(id) ON DELETE CASCADE,
39
    path        TEXT NOT NULL,
40
    blob        TEXT NOT NULL,
41
    size        INTEGER NOT NULL,
42
    PRIMARY KEY (report_id, path)
43
);
44
CREATE INDEX report_files_blob ON report_files (blob);