33 lines
1.1 KiB
Clojure
33 lines
1.1 KiB
Clojure
(ns ldview.models.entry
|
|
(:use korma.core
|
|
[ldview.db])
|
|
(:require [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)))))
|