more on track creation: set head values
This commit is contained in:
parent
35348f3fdb
commit
d4c2db9f89
2 changed files with 18 additions and 8 deletions
|
@ -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,20 +14,30 @@
|
|||
(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))
|
||||
|
|
|
@ -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)))
|
||||
|
|
Loading…
Add table
Reference in a new issue