diff --git a/storage/folder.lisp b/storage/folder.lisp index d2013d3..1ed624c 100644 --- a/storage/folder.lisp +++ b/storage/folder.lisp @@ -23,6 +23,7 @@ :short-name :fldr :table-name :folders :index-factory #'indexes + :force-insert-when nil :storage storage)) (defun root (cont) diff --git a/storage/tracking.lisp b/storage/tracking.lisp index d9fda50..3435582 100644 --- a/storage/tracking.lisp +++ b/storage/tracking.lisp @@ -104,6 +104,7 @@ (defun insert (track) (ensure-timestamp track) + (setf (trackid track) nil) (let* ((cont (container track)) (st (storage cont)) (table (storage:qualified-table-name st (table-name cont))) @@ -122,7 +123,7 @@ (storage:do-sql st (sxql:update table (apply #'sxql:make-clause ':set= (plist track)) - (where (:= :trackid (trackid track))))))) + (sxql:where (list := :trackid (trackid track))))))) ;;;; auxiliary functions for queries, ... diff --git a/test/test-storage.lisp b/test/test-storage.lisp index 992cd7e..a3cb781 100644 --- a/test/test-storage.lisp +++ b/test/test-storage.lisp @@ -95,4 +95,6 @@ (setf f1 (folder:create :child1 root)) (== (tracking:trackid f1) 2) (== (shape:head-value f1 :parentid) "1") + (setf (shape:head-value f1 :ref) :dummy-0) + (tracking:save f1) )) diff --git a/util.lisp b/util.lisp index 7c6024e..de937bf 100644 --- a/util.lisp +++ b/util.lisp @@ -30,7 +30,7 @@ `(loop for (,kvar ,vvar . nil) on ,plist by #'cddr ,@body)) (defun filter-plist (pl keys) - (loop-plist pl k v when (find k keys) collect v)) + (loop-plist pl k v when (find k keys) append (list k v))) (defun plist-pairs (pl) (loop-plist pl k v collect (list k v)))