mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-01-23 04:48:17 -05:00
89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"scroll-tech/bridge/config"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"github.com/scroll-tech/go-ethereum/log"
|
|
|
|
"scroll-tech/database"
|
|
"scroll-tech/database/migrate"
|
|
)
|
|
|
|
func initDB(file string) (*sqlx.DB, error) {
|
|
cfg, err := config.NewConfig(file)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
dbCfg := cfg.DBConfig
|
|
factory, err := database.NewOrmFactory(dbCfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
log.Debug("Got db config from env", "driver name", dbCfg.DriverName, "dsn", dbCfg.DSN)
|
|
|
|
return factory.GetDB(), nil
|
|
}
|
|
|
|
// ResetDB clean or reset database.
|
|
func ResetDB(ctx *cli.Context) error {
|
|
db, err := initDB(ctx.String(configFileFlag.Name))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var version int64
|
|
err = migrate.Rollback(db.DB, &version)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log.Info("successful to reset", "init version", version)
|
|
|
|
return nil
|
|
}
|
|
|
|
// CheckDBStatus check db status
|
|
func CheckDBStatus(ctx *cli.Context) error {
|
|
db, err := initDB(ctx.String(configFileFlag.Name))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return migrate.Status(db.DB)
|
|
}
|
|
|
|
// DBVersion return the latest version
|
|
func DBVersion(ctx *cli.Context) error {
|
|
db, err := initDB(ctx.String(configFileFlag.Name))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
version, err := migrate.Current(db.DB)
|
|
log.Info("show database version", "db version", version)
|
|
|
|
return err
|
|
}
|
|
|
|
// MigrateDB migrate db
|
|
func MigrateDB(ctx *cli.Context) error {
|
|
db, err := initDB(ctx.String(configFileFlag.Name))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return migrate.Migrate(db.DB)
|
|
}
|
|
|
|
// RollbackDB rollback db by version
|
|
func RollbackDB(ctx *cli.Context) error {
|
|
db, err := initDB(ctx.String(configFileFlag.Name))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
version := ctx.Int64("version")
|
|
return migrate.Rollback(db.DB, &version)
|
|
}
|