set timestamp default (now) explicitly upon insert

This commit is contained in:
Helmut Merz 2024-05-17 09:11:40 +02:00
parent 723ae93c83
commit 56467cd4c1
2 changed files with 6 additions and 4 deletions

View file

@ -41,6 +41,10 @@
(setf hv (cdr hv)))
pl))
(defun ensure-timestamp (track)
(if (not (time-stamp track))
(setf (time-stamp track) (get-universal-time))))
(defun proplist (track)
(let ((vl (head-proplist track)))
(with-slots ((trid trackid) (ts time-stamp) data) track
@ -51,15 +55,15 @@
vl))
(defun insert (track)
(ensure-timestamp track)
(let* ((cont (container track))
(st (storage cont))
(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))))))
(sxql:returning :trackid))))))
(setf (trackid track) (cadr res))
(setf (time-stamp track) (cadddr res))
track))
(defun create-table (cont)

View file

@ -43,11 +43,9 @@
(storage:drop-table st :tracks)
(tracking:create-table cont)
(setf tr (tracking:make-item cont "t01" "john"))
(setf (tracking:time-stamp tr) (get-universal-time))
(== (tracking:head tr) '("t01" "john"))
(== (tracking:head-proplist tr) '(:username "john" :taskid "t01"))
(== (tracking:data tr) nil)
(tracking:insert tr)
(== (tracking:trackid tr) 1)
(print (local-time:universal-to-timestamp (tracking:time-stamp tr)))
))