added reminder scheduling and sending.

This commit is contained in:
Bryce Covert
2018-04-07 08:36:59 -07:00
parent 982d5ade58
commit a2c1273843
5 changed files with 104 additions and 17 deletions

View File

@@ -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] ))

View File

@@ -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"])))