mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-04-23 03:21:35 +02:00
outsource MasterEngine retrieval into utility fun
This commit is contained in:
parent
5faf339a1b
commit
9ee0a01acc
2 changed files with 21 additions and 7 deletions
|
@ -20,7 +20,6 @@ import (
|
|||
"code.gitea.io/gitea/services/doctor"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
// CmdDoctor represents the available doctor sub-command.
|
||||
|
@ -120,7 +119,7 @@ func runRecreateTable(ctx *cli.Context) error {
|
|||
|
||||
args := ctx.Args()
|
||||
names := make([]string, 0, ctx.NArg())
|
||||
for i := 0; i < ctx.NArg(); i++ {
|
||||
for i := range ctx.NArg() {
|
||||
names = append(names, args.Get(i))
|
||||
}
|
||||
|
||||
|
@ -131,15 +130,15 @@ func runRecreateTable(ctx *cli.Context) error {
|
|||
recreateTables := migrate_base.RecreateTables(beans...)
|
||||
|
||||
return db.InitEngineWithMigration(stdCtx, func(x db.Engine) error {
|
||||
var engine *xorm.Engine
|
||||
if getter, ok := x.(interface{ Master() *xorm.Engine }); ok {
|
||||
engine = getter.Master()
|
||||
} else {
|
||||
engine = x.(*xorm.Engine)
|
||||
engine, err := db.GetMasterEngine(x)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := migrations.EnsureUpToDate(engine); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return recreateTables(engine)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -420,3 +420,18 @@ func (h *ErrorQueryHook) AfterProcess(c *contexts.ContextHook) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetMasterEngine extracts the master xorm.Engine from the provided xorm.Engine.
|
||||
// This handles both direct xorm.Engine cases and engines that implement a Master() method.
|
||||
func GetMasterEngine(x Engine) (*xorm.Engine, error) {
|
||||
if getter, ok := x.(interface{ Master() *xorm.Engine }); ok {
|
||||
return getter.Master(), nil
|
||||
}
|
||||
|
||||
engine, ok := x.(*xorm.Engine)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unsupported engine type: %T", x)
|
||||
}
|
||||
|
||||
return engine, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue