database: 'sqlite-register' takes a database, not a file name.
* guix/store/database.scm (sqlite-register): Remove #:db-file and add 'db' parameter. Remove #:schema and 'parameterize'. (register-path): Wrap 'sqlite-register' call in 'with-database' and in 'parameterize'. * tests/store-database.scm ("new database") ("register-path with unregistered references"): Adjust accordingly.
This commit is contained in:
parent
c45477d2a1
commit
ef1297e8c7
|
@ -157,21 +157,15 @@ ids of items referred to."
|
||||||
(last-insert-row-id db))
|
(last-insert-row-id db))
|
||||||
references)))
|
references)))
|
||||||
|
|
||||||
;; XXX figure out caching of statement and database objects... later
|
(define* (sqlite-register db #:key path (references '())
|
||||||
(define* (sqlite-register #:key db-file path (references '())
|
deriver hash nar-size)
|
||||||
deriver hash nar-size
|
"Registers this stuff in DB. PATH is the store item to register and
|
||||||
(schema (sql-schema)))
|
REFERENCES is the list of store items PATH refers to; DERIVER is the '.drv'
|
||||||
"Registers this stuff in a database specified by DB-FILE. PATH is the string
|
that produced PATH, HASH is the base16-encoded Nix sha256 hash of
|
||||||
path of some store item, REFERENCES is a list of string paths which the store
|
PATH (prefixed with \"sha256:\"), and NAR-SIZE is the size in bytes PATH after
|
||||||
item PATH refers to (they need to be already registered!), DERIVER is a string
|
being converted to nar form.
|
||||||
path of the derivation that created the store item PATH, HASH is the
|
|
||||||
base16-encoded sha256 hash of the store item denoted by PATH (prefixed with
|
|
||||||
\"sha256:\") after being converted to nar form, and NAR-SIZE is the size in
|
|
||||||
bytes of the store item denoted by PATH after being converted to nar form.
|
|
||||||
|
|
||||||
Every store item in REFERENCES must already be registered."
|
Every store item in REFERENCES must already be registered."
|
||||||
(parameterize ((sql-schema schema))
|
|
||||||
(with-database db-file db
|
|
||||||
(let ((id (update-or-insert db #:path path
|
(let ((id (update-or-insert db #:path path
|
||||||
#:deriver deriver
|
#:deriver deriver
|
||||||
#:hash hash
|
#:hash hash
|
||||||
|
@ -180,7 +174,7 @@ Every store item in REFERENCES must already be registered."
|
||||||
;; Call 'path-id' on each of REFERENCES. This ensures we get a
|
;; Call 'path-id' on each of REFERENCES. This ensures we get a
|
||||||
;; "non-NULL constraint" failure if one of REFERENCES is unregistered.
|
;; "non-NULL constraint" failure if one of REFERENCES is unregistered.
|
||||||
(add-references db id
|
(add-references db id
|
||||||
(map (cut path-id db <>) references))))))
|
(map (cut path-id db <>) references))))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
|
@ -267,15 +261,16 @@ be used internally by the daemon's build hook."
|
||||||
(when reset-timestamps?
|
(when reset-timestamps?
|
||||||
(reset-timestamps real-path))
|
(reset-timestamps real-path))
|
||||||
(mkdir-p db-dir)
|
(mkdir-p db-dir)
|
||||||
|
(parameterize ((sql-schema schema))
|
||||||
|
(with-database (string-append db-dir "/db.sqlite") db
|
||||||
(sqlite-register
|
(sqlite-register
|
||||||
#:db-file (string-append db-dir "/db.sqlite")
|
db
|
||||||
#:schema schema
|
|
||||||
#:path to-register
|
#:path to-register
|
||||||
#:references references
|
#:references references
|
||||||
#:deriver deriver
|
#:deriver deriver
|
||||||
#:hash (string-append "sha256:"
|
#:hash (string-append "sha256:"
|
||||||
(bytevector->base16-string hash))
|
(bytevector->base16-string hash))
|
||||||
#:nar-size nar-size)
|
#:nar-size nar-size)))
|
||||||
|
|
||||||
(when deduplicate?
|
(when deduplicate?
|
||||||
(deduplicate real-path hash #:store store-dir)))))
|
(deduplicate real-path hash #:store store-dir)))))
|
||||||
|
|
|
@ -57,20 +57,20 @@
|
||||||
(call-with-temporary-output-file
|
(call-with-temporary-output-file
|
||||||
(lambda (db-file port)
|
(lambda (db-file port)
|
||||||
(delete-file db-file)
|
(delete-file db-file)
|
||||||
(sqlite-register #:db-file db-file
|
(with-database db-file db
|
||||||
|
(sqlite-register db
|
||||||
#:path "/gnu/foo"
|
#:path "/gnu/foo"
|
||||||
#:references '()
|
#:references '()
|
||||||
#:deriver "/gnu/foo.drv"
|
#:deriver "/gnu/foo.drv"
|
||||||
#:hash (string-append "sha256:" (make-string 64 #\e))
|
#:hash (string-append "sha256:" (make-string 64 #\e))
|
||||||
#:nar-size 1234)
|
#:nar-size 1234)
|
||||||
(sqlite-register #:db-file db-file
|
(sqlite-register db
|
||||||
#:path "/gnu/bar"
|
#:path "/gnu/bar"
|
||||||
#:references '("/gnu/foo")
|
#:references '("/gnu/foo")
|
||||||
#:deriver "/gnu/bar.drv"
|
#:deriver "/gnu/bar.drv"
|
||||||
#:hash (string-append "sha256:" (make-string 64 #\a))
|
#:hash (string-append "sha256:" (make-string 64 #\a))
|
||||||
#:nar-size 4321)
|
#:nar-size 4321)
|
||||||
(let ((path-id (@@ (guix store database) path-id)))
|
(let ((path-id (@@ (guix store database) path-id)))
|
||||||
(with-database db-file db
|
|
||||||
(list (path-id db "/gnu/foo")
|
(list (path-id db "/gnu/foo")
|
||||||
(path-id db "/gnu/bar")))))))
|
(path-id db "/gnu/bar")))))))
|
||||||
|
|
||||||
|
@ -83,12 +83,12 @@
|
||||||
(delete-file db-file)
|
(delete-file db-file)
|
||||||
(catch 'sqlite-error
|
(catch 'sqlite-error
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(sqlite-register #:db-file db-file
|
(with-database db-file db
|
||||||
#:path "/gnu/foo"
|
(sqlite-register db #:path "/gnu/foo"
|
||||||
#:references '("/gnu/bar")
|
#:references '("/gnu/bar")
|
||||||
#:deriver "/gnu/foo.drv"
|
#:deriver "/gnu/foo.drv"
|
||||||
#:hash (string-append "sha256:" (make-string 64 #\e))
|
#:hash (string-append "sha256:" (make-string 64 #\e))
|
||||||
#:nar-size 1234)
|
#:nar-size 1234))
|
||||||
#f)
|
#f)
|
||||||
(lambda args
|
(lambda args
|
||||||
(pk 'welcome-exception! args)
|
(pk 'welcome-exception! args)
|
||||||
|
|
Loading…
Reference in New Issue