tracking: provide setup-select for queries
This commit is contained in:
parent
5930e8a594
commit
cc7a5e27a8
2 changed files with 17 additions and 10 deletions
|
@ -67,7 +67,7 @@
|
|||
;(util:logd sql args)
|
||||
(let* ((qp (dbi:prepare (conn st) sql))
|
||||
(qx (dbi:execute qp args)))
|
||||
(dbi:fetch-all qx))))
|
||||
(mapcar #'normalize-plist (dbi:fetch-all qx)))))
|
||||
|
||||
(defun do-sql (st spec)
|
||||
(multiple-value-bind (sql args) (sxql:yield spec)
|
||||
|
|
|
@ -69,18 +69,12 @@
|
|||
(insert track new-data)
|
||||
(update track new-data))))))
|
||||
|
||||
(defun query-one (cont crit &key (order-by '(:trackid)))
|
||||
(defun query-one (cont crit &key order-by)
|
||||
(util:lgd crit)
|
||||
(let* ((tr (make-item cont))
|
||||
(st (storage cont))
|
||||
(table (storage:qualified-table-name st (table-name cont)))
|
||||
(cols (cons :trackid (append (shape:head-fields tr) '(:timestamp :data))))
|
||||
(row (storage:normalize-plist (car (storage:query st
|
||||
(sxql:select cols
|
||||
(sxql:from table)
|
||||
(sxql:where crit)
|
||||
(sxql:order-by (values-list order-by))
|
||||
(sxql:limit 1)))))))
|
||||
(row (car (storage:query st
|
||||
(setup-select cont crit :order-by order-by :limit 1)))))
|
||||
(setup-track tr row)))
|
||||
|
||||
(defun insert (track &optional data)
|
||||
|
@ -106,6 +100,19 @@
|
|||
|
||||
;;;; auxiliary functions for queries, ...
|
||||
|
||||
(defun setup-select (cont crit &key order-by limit)
|
||||
(let ((table (storage:qualified-table-name (storage cont) (table-name cont)))
|
||||
(cols (cons :trackid (append (item-head-fields cont) '(:timestamp :data))))
|
||||
(clauses))
|
||||
(if limit
|
||||
(push (sxql:limit limit) clauses))
|
||||
(if order-by
|
||||
(push (sxql:order-by (values-list order-by)) clauses))
|
||||
(sxql:select cols
|
||||
(sxql:from table)
|
||||
(sxql:where crit)
|
||||
(values-list clauses))))
|
||||
|
||||
(defun make-where (specs)
|
||||
(let (crit)
|
||||
(dolist (spec specs)
|
||||
|
|
Loading…
Add table
Reference in a new issue