File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11{:deps {org.clojure/clojure {:mvn/version " 1.12.0" }
22 org.duct-framework/database.sql.hikaricp {:mvn/version " 0.7.0" }
33 org.duct-framework/migrator.ragtime {:mvn/version " 0.5.1" }
4- integrant/integrant {:mvn/version " 0.13.1" }}}
4+ org.duct-framework/repl.refers {:mvn/version " 0.1.0" }
5+ integrant/integrant {:mvn/version " 0.13.1" }
6+ com.github.seancorfield/next.jdbc {:mvn/version " 1.3.967" }}}
Original file line number Diff line number Diff line change 66 :dependencies [[org.clojure/clojure " 1.12.0" ]
77 [org.duct-framework/database.sql.hikaricp " 0.7.0" ]
88 [org.duct-framework/migrator.ragtime " 0.5.1" ]
9- [integrant " 0.13.1" ]])
9+ [org.duct-framework/repl.refers " 0.1.0" ]
10+ [integrant " 0.13.1" ]
11+ [com.github.seancorfield/next.jdbc " 1.3.967" ]]
12+ :profiles
13+ {:dev {:dependencies [[org.xerial/sqlite-jdbc " 3.47.0.0" ]
14+ [integrant/repl " 0.4.0" ]]}})
Original file line number Diff line number Diff line change 22 (:require [integrant.core :as ig]))
33
44(defmethod ig /expand-key :duct.module/sql [_ _]
5- {:duct.database.sql/hikaricp
6- {:logger (ig/refset :duct/logger )
7- :jdbcUrl (ig/var 'jdbc-url)}
8- :duct.migrator/ragtime
9- {:logger (ig/refset :duct/logger )
10- :database (ig/ref :duct.database/sql )
11- :strategy (ig/profile
12- :main :raise-error
13- :repl :rebase
14- :test :rebase )
15- :migrations-file " migrations.edn" }})
5+ (let [components {:duct.database.sql/hikaricp
6+ {:logger (ig/refset :duct/logger )
7+ :jdbcUrl (ig/var 'jdbc-url)}
8+ :duct.migrator/ragtime
9+ {:logger (ig/refset :duct/logger )
10+ :database (ig/ref :duct.database/sql )
11+ :strategy :rebase
12+ :migrations-file " migrations.edn" }}]
13+ (ig/profile
14+ :main (assoc-in components [:duct.migrator/ragtime :strategy ]
15+ :raise-error )
16+ :test components
17+ :repl (assoc components :duct.repl/refers
18+ '{db duct.repl.sql/db
19+ sql duct.repl.sql/sql}))))
Original file line number Diff line number Diff line change 1+ (ns duct.repl.sql
2+ (:require [integrant.core :as ig]
3+ [next.jdbc :as jdbc]))
4+
5+ (defn db
6+ " Get the database from the system map."
7+ []
8+ (val (ig/find-derived-1
9+ (var-get (requiring-resolve 'integrant.repl.state/system))
10+ :duct.database/sql )))
11+
12+ (defn sql
13+ " Run a string of SQL (plus any extra params) on the database."
14+ [stmt & params]
15+ (jdbc/execute! (db ) (into [stmt] params)))
Original file line number Diff line number Diff line change 2727 {:database (ig/ref :duct.database/sql )
2828 :logger (ig/refset :duct/logger )
2929 :strategy :rebase
30- :migrations-file " migrations.edn" }}
30+ :migrations-file " migrations.edn" }
31+ :duct.repl/refers
32+ '{db duct.repl.sql/db
33+ sql duct.repl.sql/sql}}
3134 (-> {:duct.module/sql {}}
3235 (ig/expand (ig/deprofile [:repl ]))
3336 (ig/bind {'jdbc-url " jdbc:sqlite:" })))))
Original file line number Diff line number Diff line change 1+ (ns duct.repl.sql-test
2+ (:require [clojure.test :refer [deftest is]]
3+ [duct.repl.sql :as sql]
4+ [integrant.core :as ig]
5+ [integrant.repl :as igrepl]))
6+
7+ (deftest test-user-fns
8+ (let [tempfile (java.io.File/createTempFile " duct-test" " .sqlite" )
9+ config (-> {:duct.module/sql {}}
10+ (ig/expand (ig/deprofile [:repl ]))
11+ (ig/bind {'jdbc-url (str " jdbc:sqlite:" tempfile)}))]
12+ (ig/load-namespaces config)
13+ (igrepl/set-prep! (fn [] config))
14+ (igrepl/go )
15+ (is (= [{:foo 1 }]
16+ (sql/sql " SELECT 1 AS foo" )))
17+ (igrepl/halt )))
You can’t perform that action at this time.
0 commit comments