diff options
author | Christopher Baines <mail@cbaines.net> | 2022-02-15 09:03:50 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-02-15 09:03:50 +0000 |
commit | f69da3686583d53974e720a9e66103126631cb69 (patch) | |
tree | 8df2a333e907feb92e7dd463d489b473d2e0af4b /nar-herder/database.scm | |
parent | b0263314f56cc6558e4941f64c89d9fd85aaa260 (diff) | |
download | nar-herder-f69da3686583d53974e720a9e66103126631cb69.tar nar-herder-f69da3686583d53974e720a9e66103126631cb69.tar.gz |
Keep the change datetimes consistent when mirroring
As this ensures that changes aren't missed when the mirror inserts
things later than the origin.
Diffstat (limited to 'nar-herder/database.scm')
-rw-r--r-- | nar-herder/database.scm | 27 |
1 files changed, 25 insertions, 2 deletions
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)))) |