@@ -22,14 +22,14 @@ module Onyx::SQL
2222 # # 442μs
2323 # ```
2424 class Repository
25- # A `DB::Database` instance for this repository.
25+ # A `:: DB::Database | ::DB::Connection ` instance for this repository.
2626 property db
2727
2828 # A `Repository::Logger` instance for this repository.
2929 property logger
3030
3131 # Initialize the repository.
32- def initialize (@db : DB ::Database , @logger : Logger = Logger ::Standard .new)
32+ def initialize (@db : :: DB ::Database | :: DB :: Connection , @logger : Logger = Logger ::Standard .new)
3333 end
3434
3535 protected def postgresql?
@@ -45,7 +45,7 @@ module Onyx::SQL
4545 # If the `#db` driver is `PG::Driver`, replace all `?` with `$1`, `$2` etc. Otherwise return *sql_query* untouched.
4646 def prepare_query (sql_query : String )
4747 {% begin % }
48- case db.driver
48+ case db_driver
4949 {% if Object .all_subclasses.any? { |sc | sc.stringify == " PG::Driver" } % }
5050 when PG ::Driver
5151 counter = 0
@@ -59,7 +59,7 @@ module Onyx::SQL
5959 # Return `#db` driver name, e.g. `"postgresql"` for `PG::Driver`.
6060 def driver
6161 {% begin % }
62- case db.driver
62+ case db_driver
6363 {% if Object .all_subclasses.any? { |sc | sc.stringify == " PG::Driver" } % }
6464 when PG ::Driver then " postgresql"
6565 {% end % }
@@ -70,5 +70,13 @@ module Onyx::SQL
7070 end
7171 {% end % }
7272 end
73+
74+ protected def db_driver
75+ if db.is_a?(::DB ::Database )
76+ db.as(::DB ::Database ).driver
77+ else
78+ db.as(::DB ::Connection ).context.as(::DB ::Database ).driver
79+ end
80+ end
7381 end
7482end
0 commit comments