feat(experimental): move Provider to an internal package

pull/614/head
Mike Fridman 2023-10-10 08:59:05 -04:00
parent c590380f39
commit e696fa3ba5
No known key found for this signature in database
3 changed files with 14 additions and 15 deletions

View File

@ -1,4 +1,4 @@
package goose package provider
import ( import (
"context" "context"
@ -25,7 +25,7 @@ import (
// Unless otherwise specified, all methods on Provider are safe for concurrent use. // Unless otherwise specified, all methods on Provider are safe for concurrent use.
// //
// Experimental: This API is experimental and may change in the future. // Experimental: This API is experimental and may change in the future.
func NewProvider(dialect Dialect, db *sql.DB, fsys fs.FS, opts ...ProviderOption) (*Provider, error) { func NewProvider(dialect string, db *sql.DB, fsys fs.FS, opts ...ProviderOption) (*Provider, error) {
if db == nil { if db == nil {
return nil, errors.New("db must not be nil") return nil, errors.New("db must not be nil")
} }
@ -45,7 +45,7 @@ func NewProvider(dialect Dialect, db *sql.DB, fsys fs.FS, opts ...ProviderOption
if cfg.tableName == "" { if cfg.tableName == "" {
cfg.tableName = defaultTablename cfg.tableName = defaultTablename
} }
store, err := sqladapter.NewStore(string(dialect), cfg.tableName) store, err := sqladapter.NewStore(dialect, cfg.tableName)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -1,4 +1,4 @@
package goose package provider
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package goose_test package provider
import ( import (
"database/sql" "database/sql"
@ -7,7 +7,6 @@ import (
"testing" "testing"
"testing/fstest" "testing/fstest"
"github.com/pressly/goose/v3"
"github.com/pressly/goose/v3/internal/check" "github.com/pressly/goose/v3/internal/check"
) )
@ -18,35 +17,35 @@ func TestNewProvider(t *testing.T) {
fsys := newFsys() fsys := newFsys()
t.Run("invalid", func(t *testing.T) { t.Run("invalid", func(t *testing.T) {
// Empty dialect not allowed // Empty dialect not allowed
_, err = goose.NewProvider("", db, fsys) _, err = NewProvider("", db, fsys)
check.HasError(t, err) check.HasError(t, err)
// Invalid dialect not allowed // Invalid dialect not allowed
_, err = goose.NewProvider("unknown-dialect", db, fsys) _, err = NewProvider("unknown-dialect", db, fsys)
check.HasError(t, err) check.HasError(t, err)
// Nil db not allowed // Nil db not allowed
_, err = goose.NewProvider("sqlite3", nil, fsys) _, err = NewProvider("sqlite3", nil, fsys)
check.HasError(t, err) check.HasError(t, err)
// Nil fsys not allowed // Nil fsys not allowed
_, err = goose.NewProvider("sqlite3", db, nil) _, err = NewProvider("sqlite3", db, nil)
check.HasError(t, err) check.HasError(t, err)
// Duplicate table name not allowed // Duplicate table name not allowed
_, err = goose.NewProvider("sqlite3", db, fsys, goose.WithTableName("foo"), goose.WithTableName("bar")) _, err = NewProvider("sqlite3", db, fsys, WithTableName("foo"), WithTableName("bar"))
check.HasError(t, err) check.HasError(t, err)
check.Equal(t, `table already set to "foo"`, err.Error()) check.Equal(t, `table already set to "foo"`, err.Error())
// Empty table name not allowed // Empty table name not allowed
_, err = goose.NewProvider("sqlite3", db, fsys, goose.WithTableName("")) _, err = NewProvider("sqlite3", db, fsys, WithTableName(""))
check.HasError(t, err) check.HasError(t, err)
check.Equal(t, "table must not be empty", err.Error()) check.Equal(t, "table must not be empty", err.Error())
}) })
t.Run("valid", func(t *testing.T) { t.Run("valid", func(t *testing.T) {
// Valid dialect, db, and fsys allowed // Valid dialect, db, and fsys allowed
_, err = goose.NewProvider("sqlite3", db, fsys) _, err = NewProvider("sqlite3", db, fsys)
check.NoError(t, err) check.NoError(t, err)
// Valid dialect, db, fsys, and table name allowed // Valid dialect, db, fsys, and table name allowed
_, err = goose.NewProvider("sqlite3", db, fsys, goose.WithTableName("foo")) _, err = NewProvider("sqlite3", db, fsys, WithTableName("foo"))
check.NoError(t, err) check.NoError(t, err)
// Valid dialect, db, fsys, and verbose allowed // Valid dialect, db, fsys, and verbose allowed
_, err = goose.NewProvider("sqlite3", db, fsys, goose.WithVerbose()) _, err = NewProvider("sqlite3", db, fsys, WithVerbose())
check.NoError(t, err) check.NoError(t, err)
}) })
} }