insert: use query form, return trackid and timestamp; timestamp: without TZ
This commit is contained in:
parent
6c36fdc72d
commit
bee8d6d75e
3 changed files with 21 additions and 9 deletions
|
@ -7,7 +7,7 @@
|
|||
(:export #:*db-config*
|
||||
#:make-engine #:make-storage
|
||||
#:db-options #:db-params #:qualified-table-name
|
||||
#:do-sql #:drop-table
|
||||
#:do-sql #:query #:drop-table
|
||||
#:schema))
|
||||
|
||||
(in-package :scopes/storage)
|
||||
|
@ -54,9 +54,16 @@
|
|||
(intern (format nil "~a.~a" schema (symbol-name tn)))
|
||||
tn)))
|
||||
|
||||
(defun query (st spec)
|
||||
(multiple-value-bind (sql args) (sxql:yield spec)
|
||||
;(print sql)
|
||||
(let* ((qp (dbi:prepare (conn st) sql))
|
||||
(qx (dbi:execute qp args)))
|
||||
(dbi:fetch-all qx))))
|
||||
|
||||
(defun do-sql (st spec)
|
||||
(multiple-value-bind (sql args) (sxql:yield spec)
|
||||
(print sql)
|
||||
;(print sql)
|
||||
(dbi:do-sql (conn st) sql args)))
|
||||
|
||||
(defun drop-table (st tn)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
(defpackage :scopes/storage/tracking
|
||||
(:use :common-lisp)
|
||||
(:local-nicknames (:storage :scopes/storage))
|
||||
(:export #:track #:head #:head-proplist #:time-stamp #:data
|
||||
(:export #:track #:trackid #:head #:head-proplist #:time-stamp #:data
|
||||
#:container
|
||||
#:make-item
|
||||
#:insert
|
||||
|
@ -14,7 +14,7 @@
|
|||
(in-package :scopes/storage/tracking)
|
||||
|
||||
(defclass track ()
|
||||
((trackid :initform nil)
|
||||
((trackid :accessor trackid :initform nil)
|
||||
(head :accessor head :initarg :head)
|
||||
(time-stamp :accessor time-stamp :initform nil)
|
||||
(data :accessor data :initform nil)
|
||||
|
@ -49,10 +49,14 @@
|
|||
(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
|
||||
(apply #'sxql:make-clause ':set= (proplist track))))))
|
||||
(table (storage:qualified-table-name st (table-name cont)))
|
||||
(res (car (storage:query st
|
||||
(sxql:insert-into table
|
||||
(apply #'sxql:make-clause ':set= (proplist track))
|
||||
(sxql:returning :trackid :timestamp))))))
|
||||
(setf (trackid track) (cadr res))
|
||||
(setf (time-stamp track) (cadddr res))
|
||||
track))
|
||||
|
||||
(defun create-table (cont)
|
||||
(let*
|
||||
|
@ -71,7 +75,7 @@
|
|||
(nconc
|
||||
`((trackid :type ,id-type :primary-key t :not-null t))
|
||||
hf-def
|
||||
`((timestamp :type timestamptz :not-null t :default current_timestamp)
|
||||
`((timestamp :type timestamp :not-null t :default current_timestamp)
|
||||
(data :type ,json-type :not-null t :default |'{}'|)))))
|
||||
(create-indexes st table tn (indexes cont))))
|
||||
|
||||
|
|
|
@ -47,4 +47,5 @@
|
|||
(== (tracking:head-proplist tr) '(:username "john" :taskid "t01"))
|
||||
(== (tracking:data tr) nil)
|
||||
(tracking:insert tr)
|
||||
(== (tracking:trackid tr) 1)
|
||||
))
|
||||
|
|
Loading…
Add table
Reference in a new issue