(ns lezer.model.authors (:require lezer.db :refer [conn]) (:require phel.pdo) (:require phel.sql)) (defn for-book [book] (let [[query params] (sql/format {:select [:*] :from [:authors] :where [:in :id {:select [:author_id] :from [:authors_books] :where [:= :book_id (:id book)]}]})] (-> (pdo/prepare conn query) (pdo/execute params) (pdo/fetch-all)))) (defn find-or-create [name fields] (let [[query params] (sql/format {:select [:id] :from [:authors] :where [:= :name name]})] (or (-> (pdo/prepare conn query) (pdo/execute params) (pdo/fetch-column)) (pdo/insert conn :authors (conj {:name name} fields))))) (defn find [id] (let [[query params] (sql/format {:select [:*] :from [:authors] :where [:= :id id]})] (-> (pdo/prepare conn query) (pdo/execute params) (pdo/fetch))))