* Start moving out URI from ConnectionContext
Create connections with an initial context. Database will set itself as context after connection has been created
* Migrate to simpler/decoupled factory in driver
This allows more freedom on how the connection is created. It will no longer need to have an explicit reference to the connection URI
* Introduce DB::Connection::Options
Move prepared_statements out from ConnectionContext
* Delegate options parsing to driver
DRY parsing connection options for database
* Introduce DB::Pool::Options
* Rename Driver#connection_pool_options to pool_options
* Drop driver getter from database
* Drop uri getter from database
* Add public Database#initialize method
* Drop :nodoc: Database#initialize
* Pass spec helper explicitly (to access methods within each spec)
* Update docs
* Update src/db/pool.cr
Co-authored-by: Beta Ziliani <beta@manas.tech>
* Use ConnectionBuilder instead of procs
* Fix inferred type when there is a single concrete connection type
* Update src/db/driver.cr
Co-authored-by: Beta Ziliani <beta@manas.tech>
---------
Co-authored-by: Beta Ziliani <beta@manas.tech>
* make Database a ConnectionContext.
* introduce SingleConnectionContext for independant connections.
* add `DB#connect` to create non pooled connections.
* use ?prepared_statements=true|false on connection string (default: true)
* make inmutable state in database
* make mutable state in connection
* change Connection#build to use the current prepared_statements flag to build prepared or unprepared statements.