diff --git a/storage/tracking.lisp b/storage/tracking.lisp index 2634a1e..b008f99 100644 --- a/storage/tracking.lisp +++ b/storage/tracking.lisp @@ -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)) diff --git a/test/test-storage.lisp b/test/test-storage.lisp index 3df0f1a..57198bc 100644 --- a/test/test-storage.lisp +++ b/test/test-storage.lisp @@ -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)))