diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index bd1b0386faa86d7d9255a270cece4d49e06ac5c5..2f12ed9455143c6ee90c82ddf5fc38ae519e3ac1 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -70,6 +70,7 @@ db-update-build-status! db-update-build-worker! db-restart-build! + db-restart-evaluation! db-get-build-products db-get-builds-by-search db-get-builds @@ -841,6 +842,13 @@ UPDATE Builds SET stoptime =" now (build-status scheduled) "WHERE id=" build-id ";"))) +(define (db-restart-evaluation! eval-id) + "Restart the evaluation with EVAL-ID id." + (with-db-worker-thread db + (exec-query/bind db "UPDATE Builds SET status=" + (build-status scheduled) + "WHERE evaluation=" eval-id ";"))) + (define (query->bind-arguments query-string) "Return a list of keys to query strings by parsing QUERY-STRING." (define status-values diff --git a/tests/database.scm b/tests/database.scm index 7bb08ea79c3a07f1757b901f34268ffed6745815..8c392163ebe578847de60767bcf72701dab10e16 100644 --- a/tests/database.scm +++ b/tests/database.scm @@ -496,6 +496,12 @@ timestamp, checkouttime, evaltime) VALUES ('guix', 0, 0, 0, 0);") (eq? (assq-ref (db-get-build "/new-build.drv") #:status) (build-status scheduled)))) + (test-assert "db-restart-evaluation!" + (let ((build (db-get-build "/old-build.drv"))) + (db-restart-evaluation! (assq-ref build #:eval-id)) + (eq? (assq-ref (db-get-build "/old-build.drv") #:status) + (build-status scheduled)))) + (test-assert "db-close" (begin (exec-query (%db) (format #f "DROP OWNED BY CURRENT_USER;"))