duck1123/jiksnu

View on GitHub
src/jiksnu/model/group.clj

Summary

Maintainability
Test Coverage
(ns jiksnu.model.group
  (:require [jiksnu.db :as db]
            [jiksnu.model :as model]
            [jiksnu.templates.model :as templates.model]
            [jiksnu.validators :refer [type-of]]
            [monger.collection :as mc]
            [validateur.validation :refer [validation-set presence-of]])
  (:import (org.bson.types ObjectId)
           (org.joda.time DateTime)))

(def collection-name "groups")
(def maker           #'model/map->Group)
(def page-size       20)

(def create-validators
  (validation-set
   (type-of :_id ObjectId)
   ;; (type-of :name    String)

   ;; (presence-of :members)
   ;; (presence-of :admins)
   (type-of :created DateTime)
   (type-of :updated DateTime)))

(def count-records (templates.model/make-counter       collection-name))
(def delete        (templates.model/make-deleter       collection-name))
(def drop!         (templates.model/make-dropper       collection-name))
(def remove-field! (templates.model/make-remove-field! collection-name))
(def set-field!    (templates.model/make-set-field!    collection-name))
(def push-value!   (templates.model/make-push-value!   collection-name))
(def pop-value!    (templates.model/make-pop-value!    collection-name))
(def fetch-by-id   (templates.model/make-fetch-by-id   collection-name maker))
(def create        (templates.model/make-create        collection-name
                                                       #'fetch-by-id
                                                       #'create-validators))
(def fetch-all     (templates.model/make-fetch-fn      collection-name maker))

(defn fetch-by-name
  [name]
  (maker (mc/find-one-as-map (db/get-connection) collection-name {:nickname name})))