2013-09-30 00:37:38 +02:00
|
|
|
(ns ldview.models.entry
|
|
|
|
(:use korma.core
|
2014-04-23 23:23:44 +02:00
|
|
|
[ldview.db])
|
2013-09-30 00:37:38 +02:00
|
|
|
(: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))
|
2014-01-28 14:58:11 +01:00
|
|
|
(insert entries (values {:ld_uid (:ld_uid fields)
|
2013-09-30 00:37:38 +02:00
|
|
|
:title (:title fields)
|
|
|
|
:description (:description fields)
|
2014-01-03 18:00:14 +01:00
|
|
|
:type (:type fields)
|
2013-09-30 00:37:38 +02:00
|
|
|
:user_id (:id username)
|
|
|
|
:competition_id competition-id})))
|
2014-01-28 14:58:11 +01:00
|
|
|
(doseq [link (:links fields)]
|
2013-09-30 00:37:38 +02:00
|
|
|
(source/create! (:id (by-ld-uid (:ld_uid fields))) (:url link) (:title link)))))
|