get-track basically working

This commit is contained in:
Helmut Merz 2024-05-18 09:16:09 +02:00
parent 3b3cfaf732
commit e0e65efa39
3 changed files with 17 additions and 7 deletions

View file

@ -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))

View file

@ -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*

View file

@ -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")
))