added reminder scheduling and sending.
This commit is contained in:
@@ -1,8 +1,44 @@
|
||||
(ns auto-ap.db.reminders
|
||||
(:require [clojure.java.jdbc :as j]
|
||||
[auto-ap.parse :as parse]
|
||||
[auto-ap.db.utils :refer [clj->db db->clj get-conn]]))
|
||||
[auto-ap.db.utils :refer [clj->db db->clj get-conn]]
|
||||
[clj-time.jdbc]
|
||||
[clj-time.core :as time]
|
||||
[clojure.string :as str]))
|
||||
|
||||
(defn insert [row]
|
||||
(db->clj (first (j/insert! (get-conn)
|
||||
:reminders
|
||||
(clj->db row)))))
|
||||
|
||||
(defn get-all []
|
||||
(doto (map db->clj (j/query (get-conn) "SELECT reminders.*, vendors.name as vendor_name FROM reminders INNER join vendors on reminders.vendor_id = vendors.id"))
|
||||
println))
|
||||
(map db->clj (j/query (get-conn)
|
||||
(str
|
||||
" SELECT reminders.*, vendors.name as vendor_name "
|
||||
" FROM reminders INNER join vendors on reminders.vendor_id = vendors.id "
|
||||
" ORDER BY sent DESC, scheduled DESC"))))
|
||||
|
||||
(defn delete-all []
|
||||
(j/delete! (get-conn) :reminders []))
|
||||
|
||||
(defn find-future [vendors]
|
||||
(map db->clj (j/query (get-conn) (into [(str "SELECT * FROM reminders "
|
||||
"WHERE vendor_id in ("
|
||||
(str/join "," (take (count vendors) (repeat "?")))
|
||||
") "
|
||||
"AND "
|
||||
"scheduled > NOW()"
|
||||
) ]
|
||||
vendors))))
|
||||
|
||||
|
||||
(defn get-ready []
|
||||
(map db->clj (j/query (get-conn)
|
||||
(str
|
||||
" SELECT reminders.*, vendors.name as vendor_name, vendors.email "
|
||||
" FROM reminders INNER join vendors on reminders.vendor_id = vendors.id "
|
||||
" WHERE reminders.sent IS NULL AND reminders.scheduled < NOW()"))))
|
||||
|
||||
(defn finish [id]
|
||||
(j/update! (get-conn) :reminders {:sent (time/now)} ["id = ?" id] ))
|
||||
|
||||
|
||||
@@ -24,3 +24,6 @@
|
||||
(parse (first (j/insert! (get-conn)
|
||||
:vendors
|
||||
(clj->db data)))))
|
||||
|
||||
(defn find-with-reminders []
|
||||
(map parse (j/query (get-conn) ["SELECT * FROM vendors WHERE invoice_reminder_schedule = ?" "Weekly"])))
|
||||
|
||||
Reference in New Issue
Block a user