(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)))))