Skip to content

Commit

Permalink
docs: Improve OpenDBWithDriver comments
Browse files Browse the repository at this point in the history
  • Loading branch information
mfridman committed Feb 3, 2024
1 parent 8712ba6 commit d4a4dc3
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions db.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,23 @@ import (
"fmt"
)

// OpenDBWithDriver creates a connection to a database, and modifies goose
// internals to be compatible with the supplied driver by calling SetDialect.
// OpenDBWithDriver creates a connection to a database, and modifies goose internals to be
// compatible with the supplied driver by calling SetDialect.
func OpenDBWithDriver(driver string, dbstring string) (*sql.DB, error) {
if err := SetDialect(driver); err != nil {
return nil, err
}

// To avoid breaking existing consumers. An implementation detail
// that consumers should not care which underlying driver is used.
// The Go ecosystem has added more and more drivers over the years. As a result, there's no
// longer a one-to-one match between the driver name and the dialect name. For instance, there's
// no "redshift" driver, but that's the internal dialect name within goose. Hence, we need to
// convert the dialect name to a supported driver name. This conversion is a best-effort
// attempt, as we can't support both lib/pq and pgx, which some users might have.
//
// We recommend users to create a [NewProvider] with the desired dialect, open a connection
// using their preferred driver, and provide the *sql.DB to goose. This approach removes the
// need for mapping dialects to drivers, rendering this function unnecessary.

switch driver {
case "mssql":
driver = "sqlserver"
Expand All @@ -22,7 +30,6 @@ func OpenDBWithDriver(driver string, dbstring string) (*sql.DB, error) {
case "turso":
driver = "libsql"
case "sqlite3":
// Internally uses the CGo-free port of SQLite: modernc.org/sqlite
driver = "sqlite"
case "postgres", "redshift":
driver = "pgx"
Expand Down

0 comments on commit d4a4dc3

Please sign in to comment.