From f69da3686583d53974e720a9e66103126631cb69 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 15 Feb 2022 09:03:50 +0000 Subject: Keep the change datetimes consistent when mirroring As this ensures that changes aren't missed when the mirror inserts things later than the origin. --- nar-herder/database.scm | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'nar-herder/database.scm') diff --git a/nar-herder/database.scm b/nar-herder/database.scm index e30c82a..e8c8b8d 100644 --- a/nar-herder/database.scm +++ b/nar-herder/database.scm @@ -324,7 +324,8 @@ PRAGMA optimize;"))) id))) -(define (database-insert-narinfo database narinfo) +(define* (database-insert-narinfo database narinfo + #:key change-datetime) (define (insert-narinfo-record db) (let ((statement (sqlite-prepare @@ -408,6 +409,25 @@ INSERT INTO recent_changes ( (sqlite-step statement) (sqlite-reset statement))) + (define (insert-change-with-datetime db contents datetime) + (let ((statement + (sqlite-prepare + db + " +INSERT INTO recent_changes ( + datetime, change, data +) VALUES ( + :datetime, 'addition', :contents +)" + #:cache? #t))) + (sqlite-bind-arguments + statement + #:contents contents + #:datetime datetime) + + (sqlite-step statement) + (sqlite-reset statement))) + (database-call-with-transaction database (lambda (db) @@ -426,7 +446,10 @@ INSERT INTO recent_changes ( (make-list (length references) narinfo-id) references)) - (insert-change db (narinfo-contents narinfo)) + (if change-datetime + (insert-change-with-datetime db (narinfo-contents narinfo) + change-datetime) + (insert-change db (narinfo-contents narinfo))) narinfo-id)))) -- cgit v1.2.3