diff options
author | Christopher Baines <mail@cbaines.net> | 2019-10-21 22:43:16 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-11-28 18:10:31 +0000 |
commit | 1311893e2f5b6e1e16c474d018901d4ff4a31234 (patch) | |
tree | e4261ed7343df4538342b8c56ef6b30322352614 /src/schema.sql | |
parent | 5c5790ad21d88599bb07dd9669708d8b58a47124 (diff) | |
download | cuirass-1311893e2f5b6e1e16c474d018901d4ff4a31234.tar cuirass-1311893e2f5b6e1e16c474d018901d4ff4a31234.tar.gz |
Support publishing build events
Add a table to store events, which have a type and a JSON blob. These can be
used to record changes, this commit inserts events when new builds are
created, and when the status of builds change.
The EventsOutbox table is then used to track when events have been sent
out. This is done through the new cuirass-send-events script.
* Makefile.am (bin_SCRIPTS): Add bin/cuirass-send-events.
(dist_pkgmodule_DATA): Add src/cuirass/send-events.scm.
(dist_sql_DATA): Add src/sql/upgrade-5.sql.
(EXTRA_DIST): bin/cuirass-send-events.in.
(bin/cuirass-send-events): New rule.
* bin/cuirass-send-events.in: New file.
* src/cuirass/send-events.scm: New file.
* src/sql/upgrade-5.sql: New file.
* src/cuirass/base.scm (build-packages): Call db-add-event after db-add-build.
* src/cuirass/database.scm (changes-count): New procedure.
(db-update-build-status!): Call db-add-event after updating the build status.
(db-add-event): New procedure.
(db-get-events-in-outbox): New procedure.
(db-delete-events-from-output-with-ids-<=-to): New procedure.
* src/cuirass/http.scm (handle-events-request): New procedure.
(url-handler): Handle /api/build-events requests.
* src/schema.sql (Events, EventOutbox): New tables.
Diffstat (limited to 'src/schema.sql')
-rw-r--r-- | src/schema.sql | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/schema.sql b/src/schema.sql index a9e4a6a..b84b231 100644 --- a/src/schema.sql +++ b/src/schema.sql @@ -64,6 +64,18 @@ CREATE TABLE Builds ( FOREIGN KEY (evaluation) REFERENCES Evaluations (id) ); +CREATE TABLE Events ( + id INTEGER PRIMARY KEY, + type TEXT NOT NULL, + timestamp INTEGER NOT NULL, + event_json TEXT NOT NULL +); + +CREATE TABLE EventsOutbox ( + event_id INTEGER NOT NULL, + FOREIGN KEY (event_id) REFERENCES Events (id) +); + -- Create indexes to speed up common queries, in particular those -- corresponding to /api/latestbuilds and /api/queue HTTP requests. CREATE INDEX Builds_index ON Builds(job_name, system, status ASC, timestamp ASC, derivation, evaluation, stoptime DESC); |