diff --git a/cl/chronometrist.org b/cl/chronometrist.org index 0da3c88..c1edc24 100644 --- a/cl/chronometrist.org +++ b/cl/chronometrist.org @@ -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: