more on track creation: set head values

This commit is contained in:
Helmut Merz 2024-05-15 14:52:48 +02:00
parent 35348f3fdb
commit d4c2db9f89
2 changed files with 18 additions and 8 deletions

View file

@ -5,7 +5,7 @@
(defpackage :scopes/storage/tracking (defpackage :scopes/storage/tracking
(:use :common-lisp) (:use :common-lisp)
(:local-nicknames (:storage :scopes/storage)) (:local-nicknames (:storage :scopes/storage))
(:export #:track #:time-stamp #:data (:export #:track #:head #:time-stamp #:data
#:container #:container
#:make-item #:make-item
#:insert #:insert
@ -14,21 +14,31 @@
(in-package :scopes/storage/tracking) (in-package :scopes/storage/tracking)
(defclass track () (defclass track ()
((head) ((trackid :initform nil)
(time-stamp :reader time-stamp :accessor time-stamp!) (head :accessor head :initarg :head)
(time-stamp :accessor time-stamp) :initform nil
(data :accessor data :initform nil) (data :accessor data :initform nil)
(container :reader container :initarg :container))) (container :reader container :initarg :container)))
(defclass container () (defclass container ()
((item-factory :initform #'(lambda (cont) (make-instance 'track :container cont))) ((item-factory :initform #'(lambda (cont head)
(make-instance 'track :container cont :head head)))
(head-fields :reader head-fields :initform '(taskid username)) (head-fields :reader head-fields :initform '(taskid username))
(table-name :reader table-name :initform :tracks) (table-name :reader table-name :initform :tracks)
(indexes :reader indexes :initform '((taskid username) (username))) (indexes :reader indexes :initform '((taskid username) (username)))
(storage :reader storage :initarg :storage))) (storage :reader storage :initarg :storage)))
(defun make-item (cont) (defun make-item (cont &rest head)
(funcall (slot-value cont 'item-factory) cont)) (funcall (slot-value cont 'item-factory) cont head))
(defun value-list (track)
(let ((vl (head track))
(data (data track))
(ts (time-stamp track)))
(if ts (setf (getf vl :time-stamp) ts))
(if data (setf (getf vl :data) data))
vl))
(defun insert (track) (defun insert (track)
(let* ((cont (container track)) (let* ((cont (container track))
(st (storage cont)) (st (storage cont))

View file

@ -39,9 +39,9 @@
(defun test-track (st) (defun test-track (st)
(let* ((cont (make-instance 'tracking:container :storage st)) (let* ((cont (make-instance 'tracking:container :storage st))
;;(tr (make-instance 'tracking:track :container cont))) (tr (tracking:make-item cont "t01" "john")))
(tr (tracking:make-item cont)))
(storage:drop-table st :testing.tracks) (storage:drop-table st :testing.tracks)
(tracking:create-table cont) (tracking:create-table cont)
(tracking:insert tr) (tracking:insert tr)
(== (tracking:head tr) '("t01" "john"))
(== (tracking:data tr) nil))) (== (tracking:data tr) nil)))