|
|
@@ -10,15 +10,45 @@
|
|
|
|
|
|
(restas::register-pkgmodule-traits 'timeliner.web :render-method (lambda () (make-instance 'timeliner.web::renderer)))
|
|
|
|
|
|
+;; Cron
|
|
|
+(defun import-events ()
|
|
|
+ (timeliner.locations:import-location-events (local-time:timestamp- (today) 1 :day)))
|
|
|
+(defun import-finance ()
|
|
|
+ (timeliner.financisto:import-financisto-events))
|
|
|
+
|
|
|
(defmethod restas:initialize-module-instance :before ((module (eql #.*package*)) context)
|
|
|
(restas:with-context context
|
|
|
(cl-mongo:mongo :host "10.8.0.6")
|
|
|
- (cl-mongo:db.use "timeline")))
|
|
|
+ (cl-mongo:db.use "timeline")
|
|
|
+ (restas:context-add-variable context
|
|
|
+ '*import-events-timer*
|
|
|
+ (clon:schedule-function #'import-events
|
|
|
+ (clon:make-scheduler (clon:make-typed-cron-schedule
|
|
|
+ :minute 10 :hour 0))
|
|
|
+ :name "import-events"
|
|
|
+ :thread t))
|
|
|
+ (restas:context-add-variable context
|
|
|
+ '*import-finance-timer*
|
|
|
+ (clon:schedule-function #'import-finance
|
|
|
+ (clon:make-scheduler (clon:make-typed-cron-schedule
|
|
|
+ :minute 0 :hour 7))
|
|
|
+ :name "import-finance"
|
|
|
+ :thread t))))
|
|
|
+
|
|
|
+(defmethod restas:finalize-module-instance :after ((module (eql #.*package*)) context)
|
|
|
+ (let ((events-timer (restas:context-symbol-value context '*import-events-timer*))
|
|
|
+ (finance-timer (restas:context-symbol-value context '*import-finance-timer*)))
|
|
|
+ (when events-timer
|
|
|
+ (trivial-timers::unschedule-timer events-timer))
|
|
|
+ (when finance-timer
|
|
|
+ (trivial-timers::unschedule-timer finance-timer))))
|
|
|
|
|
|
+;; Static file path
|
|
|
(defparameter *resources*
|
|
|
(merge-pathnames "resources/"
|
|
|
(asdf:component-pathname (asdf:find-system '#:timeliner))))
|
|
|
|
|
|
+;; Rendering
|
|
|
(defgeneric finalize-page (data)
|
|
|
(:documentation "Final rendering step"))
|
|
|
(defgeneric render-route-data (route data)
|