Finish implementing get-day (SQLite)

This commit is contained in:
contrapunctus 2022-04-19 09:48:11 +05:30
parent 07609d4813
commit c74d83908c
1 changed files with 48 additions and 33 deletions

View File

@ -2284,40 +2284,55 @@ ORDER BY interval_id DESC;")
((list (or (list date-id prop-id) nil))
(execute-to-list
connection "SELECT date_id, prop_id FROM dates WHERE date = ?;" date))
(intervals
(loop for (name start stop properties)
in (execute-sxql
#'execute-to-list
(select (:name :start_time :stop_time :properties)
(from :intervals)
(left-join :interval_names :using (:name_id))
(left-join :properties :using (:prop_id))
(where (:in :interval_id
(select (:interval_id)
(from :date_intervals)
(where (:= :date_id date-id))))))
connection)
collect (make-instance 'chronometrist:interval
:name name
:start start
:stop stop
:properties (when properties
(read-from-string properties)))))
(event-ids
(flatten (execute-to-list
connection
"SELECT event_id FROM date_events WHERE date_id = ?;"
date-id)))
(properties
(execute-single connection
"SELECT properties FROM properties WHERE prop_id = ?"
prop-id)))
;; (setf (chronometrist:date day) date
;; ;; (intervals day) intervals
;; ;; (events day) events
;; (chronometrist:properties day) properties)
;; day
intervals))
(when prop-id
(execute-sxql #'execute-single
(select (:properties)
(from :properties)
(where (:= :prop_id prop-id)))
connection))))
(setf (chronometrist:date day) date
(chronometrist:intervals day)
(loop for (name start stop properties)
in (execute-sxql
#'execute-to-list
(select (:name :start_time :stop_time :properties)
(from :intervals)
(left-join :interval_names :using (:name_id))
(left-join :properties :using (:prop_id))
(where (:in :interval_id
(select (:interval_id)
(from :date_intervals)
(where (:= :date_id date-id))))))
connection)
collect (make-instance 'chronometrist:interval
:name name
:start start
:stop stop
:properties (when properties
(read-from-string properties))))
(chronometrist:events day)
(loop for (name time properties)
in (execute-sxql
#'execute-to-list
(select (:name :time :properties)
(from :events)
(left-join :event_names :using (:name_id))
(left-join :properties :using (:prop_id))
(where (:in :event_id
(select (:event_id)
(from :date_events)
(where (:= :date_id date-id))))))
connection)
collect (make-instance 'chronometrist:event
:name name
:time time
:properties (when properties
(read-from-string properties))))
(chronometrist:properties day)
(when properties
(read-from-string properties)))
day))
#+END_SRC
**** iso-to-unix :function: