work in progress: insert track; provide (and use) item-factory slot in container
This commit is contained in:
parent
4dab1785a5
commit
35348f3fdb
3 changed files with 25 additions and 9 deletions
|
@ -54,10 +54,10 @@
|
|||
(intern (format nil "~a.~a" schema (symbol-name tn)))
|
||||
tn)))
|
||||
|
||||
(defun do-sql (st spec)
|
||||
(let ((sql (sxql:yield spec)))
|
||||
(defun do-sql (st spec)
|
||||
(multiple-value-bind (sql args) (sxql:yield spec)
|
||||
(print sql)
|
||||
(dbi:do-sql (conn st) sql)))
|
||||
(dbi:do-sql (conn st) sql args)))
|
||||
|
||||
(defun drop-table (st tn)
|
||||
(do-sql st (sxql:drop-table tn :if-exists t)))
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
(:use :common-lisp)
|
||||
(:local-nicknames (:storage :scopes/storage))
|
||||
(:export #:track #:time-stamp #:data
|
||||
#:container
|
||||
#:container
|
||||
#:make-item
|
||||
#:insert
|
||||
#:create-indexes #:create-table))
|
||||
|
||||
(in-package :scopes/storage/tracking)
|
||||
|
@ -15,13 +17,25 @@
|
|||
((head)
|
||||
(time-stamp :reader time-stamp :accessor time-stamp!)
|
||||
(data :accessor data :initform nil)
|
||||
(container :initarg :container)))
|
||||
(container :reader container :initarg :container)))
|
||||
|
||||
(defclass container ()
|
||||
((storage :reader storage :initarg :storage)
|
||||
(table-name :reader table-name :initform :tracks)
|
||||
((item-factory :initform #'(lambda (cont) (make-instance 'track :container cont)))
|
||||
(head-fields :reader head-fields :initform '(taskid username))
|
||||
(indexes :reader indexes :initform '((taskid username) (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 insert (track)
|
||||
(let* ((cont (container track))
|
||||
(st (storage cont))
|
||||
(table (storage:qualified-table-name st (table-name cont))))
|
||||
(storage:do-sql st
|
||||
(sxql:insert-into table
|
||||
(sxql:set= :taskid "t01")))))
|
||||
|
||||
(defun create-table (cont)
|
||||
(let*
|
||||
|
|
|
@ -39,7 +39,9 @@
|
|||
|
||||
(defun test-track (st)
|
||||
(let* ((cont (make-instance 'tracking:container :storage st))
|
||||
(tr (make-instance 'tracking:track :container cont)))
|
||||
;;(tr (make-instance 'tracking:track :container cont)))
|
||||
(tr (tracking:make-item cont)))
|
||||
(storage:drop-table st :testing.tracks)
|
||||
(tracking:create-table cont)
|
||||
(tracking:insert tr)
|
||||
(== (tracking:data tr) nil)))
|
||||
|
|
Loading…
Add table
Reference in a new issue