ldview/src/ldview/models/entry.clj

33 lines
1.2 KiB
Clojure

(ns ldview.models.entry
(:require [korma.core :refer :all]
[ldview.db :refer :all]
[ldview.models.user :as user]
[ldview.models.competition :as competition]
[ldview.models.source :as source]))
(defn all []
(select entries))
(defn by-ld-uid [ld-uid]
(first (select entries
(where {:ld_uid ld-uid}))))
(defn exists? [ld-uid]
(not (empty? (select entries
(fields :id)
(where {:ld_uid ld-uid})
(limit 1)))))
(defn create! [fields]
(let [username (user/unique-user (:author fields))
competition-id (:id (competition/latest))]
(if-not (exists? (:ld_uid fields))
(insert entries (values {:ld_uid (:ld_uid fields)
:title (:title fields)
:description (:description fields)
:type (:type fields)
:user_id (:id username)
:competition_id competition-id})))
(doseq [link (:links fields)]
(source/create! (:id (by-ld-uid (:ld_uid fields))) (:url link) (:title link)))))