mirror of
https://github.com/mruwnik/chicken-master.git
synced 2025-06-28 15:14:49 +02:00
32 lines
1022 B
Clojure
32 lines
1022 B
Clojure
(ns chicken-master.db
|
|
(:require [clojure.string :as str]
|
|
[config.core :refer [env]]
|
|
[next.jdbc :as jdbc]))
|
|
|
|
(def db-uri (env :db-uri))
|
|
|
|
(defn psql-list
|
|
([items] (psql-list items ""))
|
|
([items prefix] (str "(" (str/join ", " (repeat (count items) (str prefix "?"))) ")")))
|
|
|
|
(defn create-user [name passwd]
|
|
(jdbc/execute-one!
|
|
db-uri
|
|
["INSERT INTO users (name, password) VALUES (?, crypt(?, gen_salt('bf')))" name passwd]))
|
|
|
|
(defn valid-user? [name passwd]
|
|
(:users/id (jdbc/execute-one!
|
|
db-uri
|
|
["SELECT * FROM users WHERE name = ? AND password = crypt(?, password)" name passwd])))
|
|
|
|
(defn get-by-id
|
|
([tx user-id table id] (get-by-id tx user-id table id :id))
|
|
([tx user-id table id id-column]
|
|
(jdbc/execute-one! tx [(str "SELECT * from " (name table) " WHERE " (name id-column) " = ? AND user_id = ?")
|
|
id user-id])))
|
|
|
|
(comment
|
|
(create-user "bla" "bla")
|
|
(create-user "siloa" "łąóś")
|
|
(valid-user? "siloa" "łąóś"))
|