mirror of https://github.com/pressly/goose.git
feat(experimental): move Provider to an internal package
parent
c590380f39
commit
e696fa3ba5
|
@ -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
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package goose
|
package provider
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
|
@ -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)
|
||||||
})
|
})
|
||||||
}
|
}
|
Loading…
Reference in New Issue