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))) (setf hv (cdr hv)))
pl)) pl))
(defun ensure-timestamp (track)
(if (not (time-stamp track))
(setf (time-stamp track) (get-universal-time))))
(defun proplist (track) (defun proplist (track)
(let ((vl (head-proplist track))) (let ((vl (head-proplist track)))
(with-slots ((trid trackid) (ts time-stamp) data) track (with-slots ((trid trackid) (ts time-stamp) data) track
@ -51,15 +55,15 @@
vl)) vl))
(defun insert (track) (defun insert (track)
(ensure-timestamp track)
(let* ((cont (container track)) (let* ((cont (container track))
(st (storage cont)) (st (storage cont))
(table (storage:qualified-table-name st (table-name cont))) (table (storage:qualified-table-name st (table-name cont)))
(res (car (storage:query st (res (car (storage:query st
(sxql:insert-into table (sxql:insert-into table
(apply #'sxql:make-clause ':set= (proplist track)) (apply #'sxql:make-clause ':set= (proplist track))
(sxql:returning :trackid :timestamp)))))) (sxql:returning :trackid))))))
(setf (trackid track) (cadr res)) (setf (trackid track) (cadr res))
(setf (time-stamp track) (cadddr res))
track)) track))
(defun create-table (cont) (defun create-table (cont)

View file

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