mirror of https://github.com/status-im/migrate.git
add Close() func #7
This commit is contained in:
parent
c4c955d345
commit
0cc80701a7
|
@ -13,12 +13,17 @@ func (driver *Driver) Initialize(url string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (driver *Driver) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (driver *Driver) FilenameExtension() string {
|
func (driver *Driver) FilenameExtension() string {
|
||||||
return "sh"
|
return "sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (driver *Driver) Migrate(f file.File, pipe chan interface{}) {
|
func (driver *Driver) Migrate(f file.File, pipe chan interface{}) {
|
||||||
defer close(pipe)
|
defer close(pipe)
|
||||||
|
pipe <- f
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,10 @@ type Driver interface {
|
||||||
// that has to be made.
|
// that has to be made.
|
||||||
Initialize(url string) error
|
Initialize(url string) error
|
||||||
|
|
||||||
|
// Close is the last function to be called.
|
||||||
|
// Close any open connection here.
|
||||||
|
Close() error
|
||||||
|
|
||||||
// FilenameExtension returns the extension of the migration files.
|
// FilenameExtension returns the extension of the migration files.
|
||||||
// The returned string must not begin with a dot.
|
// The returned string must not begin with a dot.
|
||||||
FilenameExtension() string
|
FilenameExtension() string
|
||||||
|
|
|
@ -33,6 +33,13 @@ func (driver *Driver) Initialize(url string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (driver *Driver) Close() error {
|
||||||
|
if err := driver.db.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (driver *Driver) ensureVersionTableExists() error {
|
func (driver *Driver) ensureVersionTableExists() error {
|
||||||
if _, err := driver.db.Exec("CREATE TABLE IF NOT EXISTS " + tableName + " (version int not null primary key);"); err != nil {
|
if _, err := driver.db.Exec("CREATE TABLE IF NOT EXISTS " + tableName + " (version int not null primary key);"); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -46,7 +53,6 @@ func (driver *Driver) FilenameExtension() string {
|
||||||
|
|
||||||
func (driver *Driver) Migrate(f file.File, pipe chan interface{}) {
|
func (driver *Driver) Migrate(f file.File, pipe chan interface{}) {
|
||||||
defer close(pipe)
|
defer close(pipe)
|
||||||
|
|
||||||
pipe <- f
|
pipe <- f
|
||||||
|
|
||||||
tx, err := driver.db.Begin()
|
tx, err := driver.db.Begin()
|
||||||
|
|
|
@ -87,4 +87,7 @@ func TestMigrate(t *testing.T) {
|
||||||
t.Error("Expected test case to fail")
|
t.Error("Expected test case to fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := d.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,9 @@ func Up(pipe chan interface{}, url, migrationsPath string) {
|
||||||
|
|
||||||
applyMigrationFiles, err := files.ToLastFrom(version)
|
applyMigrationFiles, err := files.ToLastFrom(version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, err)
|
go pipep.Close(pipe, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -38,9 +41,15 @@ func Up(pipe chan interface{}, url, migrationsPath string) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -64,6 +73,9 @@ func Down(pipe chan interface{}, url, migrationsPath string) {
|
||||||
|
|
||||||
applyMigrationFiles, err := files.ToFirstFrom(version)
|
applyMigrationFiles, err := files.ToFirstFrom(version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, err)
|
go pipep.Close(pipe, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -76,9 +88,15 @@ func Down(pipe chan interface{}, url, migrationsPath string) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -142,6 +160,9 @@ func Migrate(pipe chan interface{}, url, migrationsPath string, relativeN int) {
|
||||||
|
|
||||||
applyMigrationFiles, err := files.From(version, relativeN)
|
applyMigrationFiles, err := files.From(version, relativeN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, err)
|
go pipep.Close(pipe, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -154,9 +175,15 @@ func Migrate(pipe chan interface{}, url, migrationsPath string, relativeN int) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if err2 := d.Close(); err != nil {
|
||||||
|
pipe <- err2
|
||||||
|
}
|
||||||
go pipep.Close(pipe, nil)
|
go pipep.Close(pipe, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -242,10 +269,12 @@ func initDriverAndReadMigrationFilesAndGetVersion(url, migrationsPath string) (d
|
||||||
}
|
}
|
||||||
files, err := file.ReadMigrationFiles(migrationsPath, file.FilenameRegex(d.FilenameExtension()))
|
files, err := file.ReadMigrationFiles(migrationsPath, file.FilenameRegex(d.FilenameExtension()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
d.Close() // TODO what happens with errors from this func?
|
||||||
return nil, nil, 0, err
|
return nil, nil, 0, err
|
||||||
}
|
}
|
||||||
version, err := d.Version()
|
version, err := d.Version()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
d.Close() // TODO what happens with errors from this func?
|
||||||
return nil, nil, 0, err
|
return nil, nil, 0, err
|
||||||
}
|
}
|
||||||
return d, &files, version, nil
|
return d, &files, version, nil
|
||||||
|
|
Loading…
Reference in New Issue