mirror of
https://github.com/mruwnik/chicken-master.git
synced 2025-06-08 21:34:43 +02:00
30 lines
1.2 KiB
Clojure
30 lines
1.2 KiB
Clojure
(ns chicken-master.customers
|
|
(:require [next.jdbc :as jdbc]
|
|
[next.jdbc.sql :as sql]
|
|
[chicken-master.db :as db]))
|
|
|
|
(defn get-all [user-id]
|
|
(->> (sql/query db/db-uri ["select * from customers where deleted is null AND user_id = ?" user-id])
|
|
(map (fn [{:customers/keys [id name]}] {:id id :name name
|
|
:product-groups {"bla" {:eggs 2 :carrots 13}
|
|
"ble" {:eggs 12 :milk 3}}}))))
|
|
|
|
(defn create! [user-id name]
|
|
(jdbc/execute! db/db-uri
|
|
["INSERT INTO customers (name, user_id) VALUES(?, ?) ON CONFLICT (name, user_id) DO UPDATE SET deleted = NULL"
|
|
name user-id])
|
|
{:customers (get-all user-id)})
|
|
|
|
(defn delete! [user-id id]
|
|
(sql/update! db/db-uri :customers {:deleted true} {:id id :user_id user-id}))
|
|
|
|
|
|
(defn get-by-name [tx user-id name]
|
|
(:customers/id (db/get-by-id tx user-id :customers name :name)))
|
|
|
|
(defn get-or-create-by-name [tx user-id name]
|
|
(if-let [id (:customers/id (db/get-by-id tx user-id :customers (:name name) :name))]
|
|
id
|
|
(do (create! user-id name)
|
|
(get-by-name tx user-id name))))
|