mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-02-04 01:07:41 +01:00
store: database: Inline SQL to where it's used.
This makes the code easier to read, as you don't have to keep jumping between the two places. * guix/store/database.scm (path-id-sql, update-sql, insert-sql, add-reference-sql): Remove variables. (path-id, update-or-insert, add-references): Include SQL. Change-Id: I53b4ab973be8d0cd10a0f35ba25972f1c9680353
This commit is contained in:
parent
b914fb9b70
commit
cdd4a0c3c9
1 changed files with 24 additions and 18 deletions
|
@ -178,13 +178,14 @@ (define (last-insert-row-id db)
|
|||
((#(id)) id)
|
||||
(_ #f))))
|
||||
|
||||
(define path-id-sql
|
||||
"SELECT id FROM ValidPaths WHERE path = :path")
|
||||
|
||||
(define* (path-id db path)
|
||||
"If PATH exists in the 'ValidPaths' table, return its numerical
|
||||
identifier. Otherwise, return #f."
|
||||
(let ((stmt (sqlite-prepare db path-id-sql #:cache? #t)))
|
||||
(let ((stmt (sqlite-prepare
|
||||
db
|
||||
"
|
||||
SELECT id FROM ValidPaths WHERE path = :path"
|
||||
#:cache? #t)))
|
||||
(sqlite-bind-arguments stmt #:path path)
|
||||
(let ((result (sqlite-fold cons '() stmt)))
|
||||
(sqlite-finalize stmt)
|
||||
|
@ -192,14 +193,6 @@ (define* (path-id db path)
|
|||
((#(id) . _) id)
|
||||
(_ #f)))))
|
||||
|
||||
(define update-sql
|
||||
"UPDATE ValidPaths SET hash = :hash, registrationTime = :time, deriver =
|
||||
:deriver, narSize = :size WHERE id = :id")
|
||||
|
||||
(define insert-sql
|
||||
"INSERT INTO ValidPaths (path, hash, registrationTime, deriver, narSize)
|
||||
VALUES (:path, :hash, :time, :deriver, :size)")
|
||||
|
||||
(define-inlinable (assert-integer proc in-range? key number)
|
||||
(unless (integer? number)
|
||||
(throw 'wrong-type-arg proc
|
||||
|
@ -222,14 +215,25 @@ (define* (update-or-insert db #:key path deriver hash nar-size time)
|
|||
|
||||
(let ((id (path-id db path)))
|
||||
(if id
|
||||
(let ((stmt (sqlite-prepare db update-sql #:cache? #t)))
|
||||
(let ((stmt (sqlite-prepare
|
||||
db
|
||||
"
|
||||
UPDATE ValidPaths
|
||||
SET hash = :hash, registrationTime = :time, deriver = :deriver, narSize = :size
|
||||
WHERE id = :id"
|
||||
#:cache? #t)))
|
||||
(sqlite-bind-arguments stmt #:id id
|
||||
#:deriver deriver
|
||||
#:hash hash #:size nar-size #:time time)
|
||||
(sqlite-fold cons '() stmt)
|
||||
(sqlite-finalize stmt)
|
||||
(last-insert-row-id db))
|
||||
(let ((stmt (sqlite-prepare db insert-sql #:cache? #t)))
|
||||
(let ((stmt (sqlite-prepare
|
||||
db
|
||||
"
|
||||
INSERT INTO ValidPaths (path, hash, registrationTime, deriver, narSize)
|
||||
VALUES (:path, :hash, :time, :deriver, :size)"
|
||||
#:cache? #t)))
|
||||
(sqlite-bind-arguments stmt
|
||||
#:path path #:deriver deriver
|
||||
#:hash hash #:size nar-size #:time time)
|
||||
|
@ -237,13 +241,15 @@ (define* (update-or-insert db #:key path deriver hash nar-size time)
|
|||
(sqlite-finalize stmt)
|
||||
(last-insert-row-id db)))))
|
||||
|
||||
(define add-reference-sql
|
||||
"INSERT OR REPLACE INTO Refs (referrer, reference) VALUES (:referrer, :reference);")
|
||||
|
||||
(define (add-references db referrer references)
|
||||
"REFERRER is the id of the referring store item, REFERENCES is a list
|
||||
ids of items referred to."
|
||||
(let ((stmt (sqlite-prepare db add-reference-sql #:cache? #t)))
|
||||
(let ((stmt (sqlite-prepare
|
||||
db
|
||||
"
|
||||
INSERT OR REPLACE INTO Refs (referrer, reference)
|
||||
VALUES (:referrer, :reference)"
|
||||
#:cache? #t)))
|
||||
(for-each (lambda (reference)
|
||||
(sqlite-reset stmt)
|
||||
(sqlite-bind-arguments stmt #:referrer referrer
|
||||
|
|
Loading…
Reference in a new issue