forked from MTSR/mapserver
working migration
This commit is contained in:
parent
b8b3dbf38d
commit
8aa8983763
@ -4,6 +4,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const migrateScript = `
|
const migrateScript = `
|
||||||
@ -46,10 +47,14 @@ func (db *Sqlite3Accessor) Migrate() error {
|
|||||||
|
|
||||||
if !hasMtime {
|
if !hasMtime {
|
||||||
log.Info("Migrating database")
|
log.Info("Migrating database")
|
||||||
|
start := time.Now()
|
||||||
_, err = rwdb.Exec(migrateScript)
|
_, err = rwdb.Exec(migrateScript)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
t := time.Now()
|
||||||
|
elapsed := t.Sub(start)
|
||||||
|
log.WithFields(logrus.Fields{"elapsed":elapsed}).Info("Migration completed")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
|
"io"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -15,6 +17,8 @@ create table blocks (
|
|||||||
);
|
);
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testDatabase = "./testdata/map.sqlite"
|
||||||
|
|
||||||
func createEmptyDatabase(filename string){
|
func createEmptyDatabase(filename string){
|
||||||
db, err := sql.Open("sqlite3", filename)
|
db, err := sql.Open("sqlite3", filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -29,7 +33,31 @@ func createEmptyDatabase(filename string){
|
|||||||
db.Close()
|
db.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMigrate(t *testing.T){
|
func copy(src, dst string) error {
|
||||||
|
in, err := os.Open(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer in.Close()
|
||||||
|
|
||||||
|
out, err := os.Create(dst)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
|
||||||
|
_, err = io.Copy(out, in)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return out.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func createTestDatabase(filename string) error {
|
||||||
|
return copy(testDatabase, filename)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMigrateEmpty(t *testing.T){
|
||||||
tmpfile, err := ioutil.TempFile("", "example")
|
tmpfile, err := ioutil.TempFile("", "example")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -45,3 +73,20 @@ func TestMigrate(t *testing.T){
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMigrate(t *testing.T){
|
||||||
|
tmpfile, err := ioutil.TempFile("", "example")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
createTestDatabase(tmpfile.Name())
|
||||||
|
a, err := NewSqliteAccessor(tmpfile.Name())
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
err = a.Migrate()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user