mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-13 15:13:51 +02:00
feat:#10 added new minimal backend
This commit is contained in:
55
datamanager/backend/core/app.go
Normal file
55
datamanager/backend/core/app.go
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user