Move StartTime initialization to application startup hook

- Remove StartTime initialization from globals.New()
- Add setupGlobals function in app.go to set StartTime during fx OnStart
- Simplify globals package to be just a key/value store
- Remove fx dependencies from globals test
This commit is contained in:
2025-07-20 12:05:24 +02:00
parent 36c59cb7b3
commit 26db096913
14 changed files with 657 additions and 46 deletions

View File

@@ -3,6 +3,7 @@ package cli
import (
"context"
"fmt"
"time"
"git.eeqj.de/sneak/vaultik/internal/config"
"git.eeqj.de/sneak/vaultik/internal/database"
@@ -17,6 +18,16 @@ type AppOptions struct {
Invokes []fx.Option
}
// setupGlobals sets up the globals with application startup time
func setupGlobals(lc fx.Lifecycle, g *globals.Globals) {
lc.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
g.StartTime = time.Now()
return nil
},
})
}
// NewApp creates a new fx application with common modules
func NewApp(opts AppOptions) *fx.App {
baseModules := []fx.Option{
@@ -24,6 +35,7 @@ func NewApp(opts AppOptions) *fx.App {
fx.Provide(globals.New),
config.Module,
database.Module,
fx.Invoke(setupGlobals),
fx.NopLogger,
}