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
(:use :common-lisp)
(:local-nicknames (:storage :scopes/storage))
(:export #:track #:time-stamp #:data
(:export #:track #:head #:time-stamp #:data
#:container
#:make-item
#:insert
@ -14,21 +14,31 @@
(in-package :scopes/storage/tracking)
(defclass track ()
((head)
(time-stamp :reader time-stamp :accessor time-stamp!)
((trackid :initform nil)
(head :accessor head :initarg :head)
(time-stamp :accessor time-stamp) :initform nil
(data :accessor data :initform nil)
(container :reader container :initarg :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))
(table-name :reader table-name :initform :tracks)
(indexes :reader indexes :initform '((taskid username) (username)))
(storage :reader storage :initarg :storage)))
(defun make-item (cont)
(funcall (slot-value cont 'item-factory) cont))
(defun make-item (cont &rest head)
(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)
(let* ((cont (container track))
(st (storage cont))

View file

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