get-track basically working
This commit is contained in:
parent
3b3cfaf732
commit
e0e65efa39
3 changed files with 17 additions and 7 deletions
|
@ -11,7 +11,7 @@
|
|||
#:db-options #:db-params #:qualified-table-name
|
||||
#:do-sql #:query #:drop-table
|
||||
#:schema
|
||||
#:normalize-plist))
|
||||
#:normalize-keyword #:normalize-plist))
|
||||
|
||||
(in-package :scopes/storage)
|
||||
|
||||
|
@ -90,7 +90,7 @@
|
|||
;;;; utilities
|
||||
|
||||
(defun normalize-keyword (kw)
|
||||
(intern (string-upcase (symbol-name kw)) :keyword))
|
||||
(intern (string-upcase kw) :keyword))
|
||||
|
||||
(defun normalize-plist (pl)
|
||||
(let ((res nil))
|
||||
|
|
|
@ -55,7 +55,6 @@
|
|||
(if data (setf (getf vl :data) (jzon:stringify data))))
|
||||
vl))
|
||||
|
||||
|
||||
(defun insert (track)
|
||||
(ensure-timestamp track)
|
||||
(let* ((cont (container track))
|
||||
|
@ -72,11 +71,20 @@
|
|||
(let* ((st (storage cont))
|
||||
(table (storage:qualified-table-name st (table-name cont)))
|
||||
(cols (append (head-fields cont) '(:timestamp :data)))
|
||||
(res (storage:normalize-plist (car (storage:query st
|
||||
(row (storage:normalize-plist (car (storage:query st
|
||||
(sxql:select cols
|
||||
(sxql:from table)
|
||||
(sxql:where (:= :trackid trid))))))))
|
||||
res))
|
||||
(build-track cont row)))
|
||||
|
||||
(defun build-track (cont row)
|
||||
(let* ((hv (mapcar #'(lambda (x) (getf row x)) (head-fields cont)))
|
||||
(tr (apply #'make-item cont hv)))
|
||||
(setf (trackid tr) (getf row :trackid))
|
||||
(setf (time-stamp tr) (getf row :timestamp))
|
||||
(setf (data tr)
|
||||
(jzon:parse (getf row :data) :key-fn #'storage:normalize-keyword))
|
||||
tr))
|
||||
|
||||
(defun create-table (cont)
|
||||
(let*
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
(t:show-result)))
|
||||
|
||||
(defun test-track (st)
|
||||
(let (cont tr (data (make-hash-table :test 'equalp)))
|
||||
(let (cont tr tr2 (data (make-hash-table)))
|
||||
(setf cont (make-instance 'tracking:container :storage st))
|
||||
(storage:drop-table st :tracks)
|
||||
(tracking:create-table cont)
|
||||
|
@ -50,5 +50,7 @@
|
|||
(setf (tracking:data tr) data)
|
||||
(tracking:insert tr)
|
||||
(== (tracking:trackid tr) 1)
|
||||
(print (tracking:get-track cont 1))
|
||||
(setf tr2 (tracking:get-track cont 1))
|
||||
(== (tracking:head tr2) '("t01" "john"))
|
||||
(== (gethash :desc (tracking:data tr2)) "scopes/storage: queries")
|
||||
))
|
||||
|
|
Loading…
Add table
Reference in a new issue