diff options
| author | 2026-09-14 00:51:56 -0700 | |
|---|---|---|
| committer | 2026-09-14 00:53:27 -0700 | |
| commit | ddead52187bfc77e970550ae1fb663b0da88d15f (patch) | |
| tree | ee077241aefbc38712102669829c36613e2896d9 /src/model/books.phel | |
| parent | 24fc3ae9367fab7468cd3600cc4c3f61ad9506f6 (diff) | |
| download | lezer-ddead52187bfc77e970550ae1fb663b0da88d15f.tar.gz lezer-ddead52187bfc77e970550ae1fb663b0da88d15f.zip | |
Move database functions to model modules
Diffstat (limited to 'src/model/books.phel')
| -rw-r--r-- | src/model/books.phel | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/model/books.phel b/src/model/books.phel new file mode 100644 index 0000000..26dbe6f --- /dev/null +++ b/src/model/books.phel @@ -0,0 +1,43 @@ +(ns lezer.model.books + (:require lezer.db :refer [conn]) + (:require phel.pdo) + (:require phel.sql) + (:require lezer.model.authors)) + +(defn all [] + (let [[query _] (sql/format {:select [:*] + :from [:books]})] + (pdo/select conn query))) + +(defn create [fields] + (pdo/insert conn :books fields)) + +(defn pages [book-id] + (let [[query params] (sql/format {:select [:pages] + :from [:books] + :where [:= :id book-id]})] + (-> (pdo/prepare conn query) + (pdo/execute params) + (pdo/fetch-column)))) + +(defn find [id] + (let [[query params] (sql/format {:select [:*] + :from [:books] + :where [:= :id id]})] + (-> (pdo/prepare conn query) + (pdo/execute params) + (pdo/fetch)))) + +(defn for-author [author-id] + (let [[query params] (sql/format {:select [:*] + :from [:books] + :where [:in :id {:select [:book_id] + :from [:authors_books] + :where [:= :author_id author-id]}]})] + (-> (pdo/prepare conn query) + (pdo/execute params) + (pdo/fetch-all)))) + +(defn add-author [id fields] + (pdo/insert conn :authors_books {:book_id id + :author_id (authors/find-or-create (:name fields) fields)})) |
