62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
_ "github.com/go-sql-driver/mysql" // mysql driver
|
|
mysqlDriver "github.com/go-sql-driver/mysql"
|
|
"github.com/golang-migrate/migrate/v4"
|
|
mysqlMigrate "github.com/golang-migrate/migrate/v4/database/mysql"
|
|
_ "github.com/golang-migrate/migrate/v4/source/file"
|
|
"sismedika.com/sas/westone/configs"
|
|
"sismedika.com/sas/westone/db"
|
|
)
|
|
|
|
func main() {
|
|
cfg := mysqlDriver.Config{
|
|
User: configs.Envs.DBUser,
|
|
Passwd: configs.Envs.DBPassword,
|
|
Addr: configs.Envs.DBAddress,
|
|
DBName: configs.Envs.DBName,
|
|
Net: "tcp",
|
|
AllowNativePasswords: true,
|
|
ParseTime: true,
|
|
}
|
|
|
|
db, err := db.NewMySQLStorage(cfg)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
driver, err := mysqlMigrate.WithInstance(db.DB, &mysqlMigrate.Config{})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
m, err := migrate.NewWithDatabaseInstance(
|
|
"file://cmd/migrate/migrations",
|
|
"mysql",
|
|
driver,
|
|
)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
v, d, _ := m.Version()
|
|
log.Printf("Version: %d, dirty: %v", v, d)
|
|
|
|
cmd := os.Args[len(os.Args)-1]
|
|
if cmd == "up" {
|
|
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
if cmd == "down" {
|
|
if err := m.Down(); err != nil && err != migrate.ErrNoChange {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
}
|