mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-25 13:59:14 +02:00
56 lines
996 B
Go
56 lines
996 B
Go
package core
|
|
|
|
import (
|
|
"datamanager/backend/dbx"
|
|
"datamanager/backend/tools/hook"
|
|
)
|
|
|
|
type App interface {
|
|
// DB returns the default app database instance.
|
|
DB() *dbx.DB
|
|
OnTerminate() *hook.Hook[*TerminateEvent]
|
|
ResetBootstrapState() error
|
|
}
|
|
|
|
func NewBaseApp(config BaseAppConfig) App {
|
|
|
|
app := &BaseApp{
|
|
isDev: config.IsDev,
|
|
dataDir: config.DataDir,
|
|
db: *dbx.NewDB("neo4j", "password"),
|
|
onTerminate: &hook.Hook[*TerminateEvent]{},
|
|
}
|
|
return app
|
|
}
|
|
|
|
type BaseApp struct {
|
|
// configurable parameters
|
|
isDev bool
|
|
dataDir string
|
|
db dbx.DB
|
|
onTerminate *hook.Hook[*TerminateEvent]
|
|
}
|
|
|
|
func (app *BaseApp) DB() *dbx.DB {
|
|
db := app.db
|
|
|
|
return &db
|
|
}
|
|
|
|
func (app *BaseApp) ResetBootstrapState() error {
|
|
|
|
if app.DB() != nil {
|
|
if err := app.db.Close(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// replace the db instance with nil
|
|
app.db = dbx.DB{}
|
|
return nil
|
|
}
|
|
|
|
func (app *BaseApp) OnTerminate() *hook.Hook[*TerminateEvent] {
|
|
return app.onTerminate
|
|
}
|