summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-10-30 09:19:28 +0100
committerRicardo Wurmus <rekado@elephly.net>2019-10-30 09:19:28 +0100
commit8a618322b12436dac6034817c596aa9fd433dd8d (patch)
tree9fa83ce1aabdef09ebf886b60881331180aff52f
parentc88a7c006ef164015e5c3fb1544b8112bf6ececf (diff)
downloadcuirass-8a618322b12436dac6034817c596aa9fd433dd8d.tar
cuirass-8a618322b12436dac6034817c596aa9fd433dd8d.tar.gz
database: Add db-remove-specification.
* src/cuirass/database.scm (db-remove-specification): New procedure.
-rw-r--r--src/cuirass/database.scm11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 8db5411..523165d 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -38,6 +38,7 @@
db-open
db-close
db-add-specification
+ db-remove-specification
db-get-specifications
db-add-evaluation
db-set-evaluations-done
@@ -332,6 +333,16 @@ package_path_inputs, proc_input, proc_file, proc, proc_args) \
(assq-ref spec #:inputs))
spec-id)))
+(define (db-remove-specification name)
+ "Remove the specification matching NAME from the database and its inputs."
+ (with-db-critical-section db
+ (sqlite-exec db "BEGIN TRANSACTION;")
+ (sqlite-exec db "\
+DELETE FROM Inputs WHERE specification=" name ";")
+ (sqlite-exec db "\
+DELETE FROM Specifications WHERE name=" name ";")
+ (sqlite-exec db "COMMIT;")))
+
(define (db-get-inputs spec-name)
(with-db-critical-section db
(let loop ((rows (sqlite-exec