Files

106 lines
1.7 KiB
Go
Raw Permalink Normal View History

2019-06-27 16:43:18 -04:00
package main
import (
2020-01-14 14:29:00 -05:00
"encoding/json"
"github.com/openaccounting/oa-server/core/model/db"
"github.com/openaccounting/oa-server/core/model/types"
"log"
"os"
2019-06-27 16:43:18 -04:00
)
func main() {
2020-01-14 14:29:00 -05:00
if len(os.Args) != 2 {
log.Fatal("Usage: migrate2.go <upgrade/downgrade>")
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
command := os.Args[1]
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
if command != "upgrade" && command != "downgrade" {
log.Fatal("Usage: migrate2.go <upgrade/downgrade>")
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
//filename is the path to the json config file
var config types.Config
file, err := os.Open("./config.json")
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
if err != nil {
log.Fatal(err)
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
decoder := json.NewDecoder(file)
err = decoder.Decode(&config)
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
if err != nil {
log.Fatal(err)
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
connectionString := config.User + ":" + config.Password + "@/" + config.Database
db, err := db.NewDB(connectionString)
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
if command == "upgrade" {
err = upgrade(db)
} else {
err = downgrade(db)
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
if err != nil {
log.Fatal(err)
}
2019-06-27 16:43:18 -04:00
2020-01-14 14:29:00 -05:00
log.Println("done")
2019-06-27 16:43:18 -04:00
}
func upgrade(db *db.DB) (err error) {
2020-01-14 14:29:00 -05:00
tx, err := db.Begin()
if err != nil {
return
}
defer func() {
if p := recover(); p != nil {
tx.Rollback()
panic(p) // re-throw panic after Rollback
} else if err != nil {
tx.Rollback()
} else {
err = tx.Commit()
}
}()
query1 := "ALTER TABLE org ADD COLUMN timezone VARCHAR(100) NOT NULL AFTER `precision`"
if _, err = tx.Exec(query1); err != nil {
return
}
return
2019-06-27 16:43:18 -04:00
}
func downgrade(db *db.DB) (err error) {
2020-01-14 14:29:00 -05:00
tx, err := db.Begin()
if err != nil {
return
}
defer func() {
if p := recover(); p != nil {
tx.Rollback()
panic(p) // re-throw panic after Rollback
} else if err != nil {
tx.Rollback()
} else {
err = tx.Commit()
}
}()
query1 := "ALTER TABLE org DROP COLUMN timezone"
if _, err = tx.Exec(query1); err != nil {
return
}
return
2019-06-27 16:43:18 -04:00
}