mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-01-15 00:48:01 -05:00
Co-authored-by: georgehao <haohongfan@gmail.com> Co-authored-by: colinlyguo <colinlyguo@users.noreply.github.com>
121 lines
2.2 KiB
Go
121 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"github.com/scroll-tech/go-ethereum/log"
|
|
"github.com/urfave/cli/v2"
|
|
"gorm.io/gorm"
|
|
|
|
"scroll-tech/common/database"
|
|
"scroll-tech/common/utils"
|
|
|
|
"scroll-tech/bridge-history-api/internal/config"
|
|
"scroll-tech/bridge-history-api/internal/orm/migrate"
|
|
)
|
|
|
|
func getConfig(ctx *cli.Context) (*config.Config, error) {
|
|
file := ctx.String(utils.ConfigFileFlag.Name)
|
|
dbCfg, err := config.NewConfig(file)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return dbCfg, nil
|
|
}
|
|
|
|
func initDB(dbCfg *database.Config) (*gorm.DB, error) {
|
|
return database.InitDB(dbCfg)
|
|
}
|
|
|
|
// resetDB clean or reset database.
|
|
func resetDB(ctx *cli.Context) error {
|
|
cfg, err := getConfig(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
gormDB, err := initDB(cfg.DB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
db, err := gormDB.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = migrate.ResetDB(db)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log.Info("successful to reset")
|
|
return nil
|
|
}
|
|
|
|
// checkDBStatus check db status
|
|
func checkDBStatus(ctx *cli.Context) error {
|
|
cfg, err := getConfig(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
gormDB, err := initDB(cfg.DB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
db, err := gormDB.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return migrate.Status(db)
|
|
}
|
|
|
|
// dbVersion return the latest version
|
|
func dbVersion(ctx *cli.Context) error {
|
|
cfg, err := getConfig(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
gormDB, err := initDB(cfg.DB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
db, err := gormDB.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
version, err := migrate.Current(db)
|
|
log.Info("show database version", "db version", version)
|
|
|
|
return err
|
|
}
|
|
|
|
// migrateDB migrate db
|
|
func migrateDB(ctx *cli.Context) error {
|
|
cfg, err := getConfig(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
gormDB, err := initDB(cfg.DB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
db, err := gormDB.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return migrate.Migrate(db)
|
|
}
|
|
|
|
// rollbackDB rollback db by version
|
|
func rollbackDB(ctx *cli.Context) error {
|
|
cfg, err := getConfig(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
gormDB, err := initDB(cfg.DB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
db, err := gormDB.DB()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
version := ctx.Int64("version")
|
|
return migrate.Rollback(db, &version)
|
|
}
|