From 8488eeb26c2b64c73f077fbd0d75f0c464904676 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 7 Aug 2024 23:06:00 +0200 Subject: [PATCH] folder: define key-fields; tracking:track-equal: compare trimmed head values --- storage/folder.lisp | 3 ++- storage/tracking.lisp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/storage/folder.lisp b/storage/folder.lisp index 3d256ef..db00c3a 100644 --- a/storage/folder.lisp +++ b/storage/folder.lisp @@ -10,7 +10,8 @@ (in-package :scopes/storage/folder) (defclass folder (tracking:track) - ((shape:head-fields :initform '(:parent :name :ref)))) + ((shape:head-fields :initform '(:parent :name :ref)) + (tracking:key-fields :initform '(:parent :name)))) (defun indexes (cont) '((parent name ref) (ref))) diff --git a/storage/tracking.lisp b/storage/tracking.lisp index 94f0bec..43300ac 100644 --- a/storage/tracking.lisp +++ b/storage/tracking.lisp @@ -8,7 +8,7 @@ (:util :scopes/util) (:alx :alexandria) (:jzon :com.inuoe.jzon)) - (:export #:track #:trackid #:timestamp + (:export #:track #:trackid #:key-fields #:timestamp #:container #:make-container #:table-name #:storage #:make-item #:get-track #:query-last #:query-one #:query #:save #:insert #:update @@ -128,6 +128,8 @@ ;;;; auxiliary functions for queries, ... (defun track-equal (old new) + (unless (equal (util:rtrim (shape:head old)) (util:rtrim (shape:head new))) + (return-from track-equal nil)) (if (timestamp new) (unless (equal (timestamp new) (timestamp old)) (return-from track-equal nil)))