(ns user (:require [clojure.java.io :as io] [clojure.tools.logging :as log] [clojure.tools.namespace.repl :as tn-repl] [migration :as migration] [clojure.string :as str] [com.score-the-pigs :as main :refer [system]] [com.score-the-pigs.util.db :as db] [honey.sql :as sql] [honey.sql.helpers :refer [drop-table]] [next.jdbc :as jdbc] [migratus.core :as migratus])) (defn reset-db! [] (let [{:keys [example/ds]} @system tables [:game :player :schema_migrations] drop-statements (map (fn [table] (sql/format (drop-table :if-exists table))) tables)] (println ds) (db/execute-all! ds drop-statements) (migratus/migrate migration/config) (let [game-code "test"] (jdbc/execute! ds (sql/format {:insert-into :game :values [{:code game-code, :current_player 0, :player_count 3, :scoring_option "first-to-100"}]})) (jdbc/execute! ds (sql/format {:insert-into :player :values [{:game_score 0, :round_score 0, :name "luci", :game_code game-code, :play_order 0} {:game_score 0, :round_score 0, :name "lily", :game_code game-code, :play_order 1} {:game_score 0, :round_score 0, :name "delta", :game_code game-code, :play_order 2}]}))))) (defn game [c] (let [{:keys [example/ds]} @system] (->> {:select :* :from :game :where [:= :game.code c]} sql/format (jdbc/execute-one! ds)))) (defn games [] (let [{:keys [example/ds]} @system] (->> {:select :* :from :game} sql/format (jdbc/execute! ds)))) (defn players [] (let [{:keys [example/ds]} @system] (->> {:select :* :from :player} sql/format (jdbc/execute! ds)))) (defn game-players [c] (let [{:keys [example/ds]} @system] (->> {:select :* :from :player :where [:= :player.game-code c]} sql/format (jdbc/execute! ds)))) (defn refresh [] (doseq [f (:biff/stop @system)] (log/info "stopping:" (str f)) (f)) (tn-repl/refresh :after `main/start) :done) (defn start [] (main/start)) (comment (reset-db!) (refresh))