Update: done.

draft
kimory 2022-10-16 16:01:35 +02:00
parent 6ea4c26172
commit 9de26d52c0
1 changed files with 15 additions and 11 deletions

View File

@ -109,17 +109,6 @@
(defun db/index/del (database index-name object)
(delete-file (db/index/get-symlink-path database index-name object)))
(defun db/index/update (database index-name object file-name old-object)
(let* ((struct-name (db-struct-name database))
(new-value (get-object-attribute struct-name index-name object))
(old-value (get-object-attribute struct-name index-name old-object)))
(if (not (equal new-value old-value))
(progn
; delete old index
(db/index/del database index-name old-object)
; create new index
(db/index/new database index-name object file-name)))))
; Example: database "color" object
; -> "./storage/cars/partitions/by_color/Red/0000000015".
(defun db/partition/get-symlink-path (database partition-name object file-name)
@ -257,6 +246,21 @@
(alias db/get-by-index db/search/fs/get-by-index)
(alias db/get-by-partition db/search/fs/get-by-partition)
(defun db/index/update (database index-name object file-name old-object)
(let* ((struct-name (db-struct-name database))
(new-value (get-object-attribute struct-name index-name object))
(old-value (get-object-attribute struct-name index-name old-object))
(symlink-path (db/index/get-symlink-path database index-name object)))
(if (not (equal new-value old-value))
; display a message in case the new index is already used by another object
(if (probe-file symlink-path)
(format t "db/index/update: the value ~a is already used by another object.~&" new-value)
(progn
; delete old index
(db/index/del database index-name old-object)
; create new index
(db/index/new database index-name object file-name))))))
; TODO: check database integrity (redundancy)
; TODO: locking
(defun db/update (database object-index)