Guest User

Untitled

a guest
Aug 24th, 2015
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns mafia-votecount.models
  2.   (:require [clojure.string :as string])
  3.   (:use [korma.db]
  4.         [korma.core]))
  5.  
  6. (def db (h2 {:db "./resources/database"}))
  7.  
  8. (defdb korma-db db)
  9.  
  10. (declare game host player vote)
  11.  
  12. (defentity game
  13.   (table :game)
  14.   (has-many player)
  15.   (has-many host)
  16.   (has-many vote))
  17.  
  18. (defentity host
  19.   (table :host)
  20.   (belongs-to game))
  21.  
  22. (defentity player
  23.   (table :player)
  24.   (belongs-to game))
  25.  
  26. (defentity vote
  27.   (table :vote)
  28.   (belongs-to game))
  29.  
  30. (defn has-game [id]
  31.   (not-empty
  32.     (select game
  33.             (fields :id)
  34.             (where {:id id}))))
  35.  
  36. (defn add-game [id name url]
  37.   (insert game
  38.           (values {:id id
  39.                    :name name
  40.                    :url (str url)
  41.                    :start_date nil})))
  42.  
  43. (defn update-game [id last-index cycle-number cycle-type]
  44.   (update game
  45.           (set-fields {:last_index last-index
  46.                        :cycle_number cycle-number
  47.                        :cycle_type cycle-type})
  48.           (where {:id id})))
  49.  
  50. (defn get-games []
  51.   (select game))
  52.  
  53. (defn get-game-by-id [id]
  54.   (let [games (select game (where {:id id}))]
  55.     (if (seq? games)
  56.       (first games)
  57.       nil)))
  58.  
  59. (defn get-game-url [id]
  60.   (:url (first
  61.          (select game
  62.                  (fields :url)
  63.                  (where {:id id})))))
  64.  
  65. (defn add-players [game-id names]
  66.   (let [rows (map (fn [name] {:game game-id :name name}) names)]
  67.    (insert player
  68.         (values rows))))
  69.  
  70. (defn get-players [game-id]
  71.   (select player
  72.           (fields :id :name)
  73.           (where {:game game-id})))
  74.  
  75. (defn delete-game-by-id [id]
  76.   (delete game
  77.   (where {:id id})))
  78.  
  79. (defn delete-player-by-id [id]
  80.   (delete player
  81.   (where {:id (Integer/parseInt id)})))
  82.  
  83. (defn- host-make-row [game-id name]
  84.   {:game game-id :name name})
  85.  
  86. (defn add-hosts [game-id names]
  87.   (insert host
  88.           (values
  89.            (map (partial host-make-row game-id) names))))
  90.  
  91. (defn get-hosts [game-id]
  92.   (into #{}
  93.         (map :name
  94.              (select host
  95.                      (fields :name)
  96.                      (where {:game game-id})))))
  97.  
  98. (defn add-votes [votes]
  99.   (if-not (empty? votes)
  100.     (insert vote
  101.             (values votes))))
  102.  
  103. (defn get-votes [id]
  104.   (select vote
  105.           (fields :id :index :day :voter :target)
  106.           (where {:game id})
  107.           (order :id :ASC)))
Advertisement
Add Comment
Please, Sign In to add comment