package controllers import ( "git.golem15.com/golem15/summercms/modules/backpack" "git.golem15.com/golem15/summercms/modules/compass" "git.golem15.com/golem15/summercms/modules/phrasebook" "gorm.io/gorm" ) // appAccess resolves the booted application on every call, so an admin // controller never keeps a database handle or a config of its own. type appAccess func() *backpack.App // application returns the booted app, or nil before boot. func (a appAccess) application() *backpack.App { if a == nil { return nil } return a() } // db is the application pool, or nil when the app has none. func (a appAccess) db() *gorm.DB { app := a.application() if app == nil { return nil } gdb, ok := app.Lookup[*gorm.DB]() if !ok { return nil } return gdb } // config is the application config, or nil before boot. func (a appAccess) config() *compass.Config { app := a.application() if app == nil { return nil } return app.Config } // translator is the application translator, or nil when none is published. func (a appAccess) translator() *phrasebook.Translator { return appTranslator(a.application()) }