diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2016-07-26 00:36:12 +0200 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2016-07-26 00:36:12 +0200 |
commit | c83d5d4da84d31e1c05e6e5d77c7f78fa4a38ad9 (patch) | |
tree | fa43aed3b470a151e4fef963657e22a010d56d89 /src | |
parent | e51a755f10ac7a093d85fb6f8868c33a046cc9ab (diff) | |
download | cuirass-c83d5d4da84d31e1c05e6e5d77c7f78fa4a38ad9.tar cuirass-c83d5d4da84d31e1c05e6e5d77c7f78fa4a38ad9.tar.gz |
Use stamps to poll repositories.
Diffstat (limited to 'src')
-rw-r--r-- | src/cuirass/database.scm | 22 | ||||
-rw-r--r-- | src/schema.sql | 6 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index 3b8ffb9..dbbe00a 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -29,6 +29,8 @@ db-close db-add-specification db-get-specifications + db-add-stamp + db-get-stamp evaluation-exists? db-add-evaluation db-get-evaluation @@ -188,3 +190,23 @@ INSERT INTO Builds (derivation, log, output) VALUES ('~A', '~A', '~A');" (assq-ref build #:log) (assq-ref build #:output)) (last-insert-rowid db)) + +(define (db-get-stamp db spec) + "Return a stamp corresponding to specification SPEC in database DB." + (let ((res (sqlite-exec db "SELECT * FROM Stamps WHERE specification='~A';" + (assq-ref spec #:id)))) + (match res + (() "") + ((#(spec commit)) commit)))) + +(define (db-add-stamp db spec commit) + "Associate stamp COMMIT to specification SPEC in database DB." + (if (string-null? (db-get-stamp db spec)) + (sqlite-exec db "\ +INSERT INTO Stamps (specification, stamp) VALUES ('~A', '~A');" + (assq-ref spec #:id) + commit) + (sqlite-exec db "\ +UPDATE Stamps SET stamp='~A' WHERE specification='~A';" + commit + (assq-ref spec #:id)))) diff --git a/src/schema.sql b/src/schema.sql index 9cc7167..d5c1f00 100644 --- a/src/schema.sql +++ b/src/schema.sql @@ -14,6 +14,12 @@ CREATE TABLE Specifications ( revision TEXT ); +CREATE TABLE Stamps ( + specification INTEGER NOT NULL PRIMARY KEY, + stamp TEXT NOT NULL, + FOREIGN KEY (specification) REFERENCES Specifications (id) +); + CREATE TABLE Evaluations ( derivation TEXT NOT NULL PRIMARY KEY, job_name TEXT NOT NULL, |