diff options
author | Christopher Baines <mail@cbaines.net> | 2024-02-18 12:56:51 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2024-04-03 17:18:39 +0100 |
commit | cdd4a0c3c952c207ec9460c0a693cb7b30f2085a (patch) | |
tree | 540cd05de5233de3bb630f3ddb74ecf9398557dd | |
parent | b914fb9b701cecd99add14fc8040f78a0712058e (diff) | |
download | guix-cdd4a0c3c952c207ec9460c0a693cb7b30f2085a.tar guix-cdd4a0c3c952c207ec9460c0a693cb7b30f2085a.tar.gz |
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
-rw-r--r-- | guix/store/database.scm | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/guix/store/database.scm b/guix/store/database.scm index de72b79860..e958ef4d36 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -178,13 +178,14 @@ If FILE doesn't exist, create it and initialize it as a new database. Pass ((#(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 @@ identifier. Otherwise, return #f." ((#(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 @@ of course. Returns the row id of the row that was modified or inserted." (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 @@ of course. Returns the row id of the row that was modified or inserted." (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 |