| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- (ns user
- (:require [com.stuartsierra.component :as component]
- [clojure.tools.namespace.repl :as namespace]
- [backend.config :as config]
- [backend.db-migrate :as migrate]
- [io.pedestal.service-tools.dev :as dev]
- [clj-time
- [coerce :as tc]
- [core :as t]]
- [clojure.java.io :as io]
- [clojure.string :as string]))
- (namespace/disable-reload!)
- (namespace/set-refresh-dirs "src" "dev")
- (defonce *system (atom nil))
- (defonce *db (atom nil))
- (defn migrate []
- (migrate/migrate @*db))
- (defn rollback []
- (migrate/rollback @*db))
- (defn stop []
- (some-> @*system (component/stop))
- (reset! *system nil))
- (defn refresh []
- (let [res (namespace/refresh)]
- (when (not= res :ok)
- (throw res))
- :ok))
- (defn go
- []
- (require 'backend.core)
- (dev/watch)
- (when-some [f (resolve 'backend.system/new-system)]
- (when-some [system (f config/config)]
- (when-some [system' (component/start system)]
- (reset! *system system')
- (reset! *db {:datasource (get-in @*system [:hikari :datasource])}))))
- (migrate))
- (defn reset []
- (stop)
- (refresh)
- (go))
- (defn get-unix-timestamp []
- (tc/to-long (t/now)))
- (def date-format
- "Format for DateTime"
- "yyyyMMddHHmmss")
- (def migrations-dir
- "Default migrations directory"
- "resources/migrations/")
- (def ragtime-format-edn
- "EDN template for SQL migrations"
- "{:up [\"\"]\n :down [\"\"]}")
- (defn migrations-dir-exist?
- "Checks if 'resources/migrations' directory exists"
- []
- (.isDirectory (io/file migrations-dir)))
- (defn now
- "Gets the current DateTime" []
- (.format (java.text.SimpleDateFormat. date-format) (new java.util.Date)))
- (defn migration-file-path
- "Complete migration file path"
- [name]
- (str migrations-dir (now) "_" (string/replace name #"\s+|-+|_+" "_") ".edn"))
- (defn create-migration
- "Creates a migration file with the current DateTime"
- [name]
- (let [migration-file (migration-file-path name)]
- (if-not (migrations-dir-exist?)
- (io/make-parents migration-file))
- (spit migration-file ragtime-format-edn)))
- (defn reset-db
- []
- (dotimes [i 100]
- (rollback))
- (migrate))
|