package database import ( "context" "fmt" "os" "path/filepath" "git.eeqj.de/sneak/vaultik/internal/config" "go.uber.org/fx" ) // Module provides database dependencies var Module = fx.Module("database", fx.Provide( provideDatabase, NewRepositories, ), ) func provideDatabase(lc fx.Lifecycle, cfg *config.Config) (*DB, error) { // Ensure the index directory exists indexDir := filepath.Dir(cfg.IndexPath) if err := os.MkdirAll(indexDir, 0700); err != nil { return nil, fmt.Errorf("creating index directory: %w", err) } db, err := New(context.Background(), cfg.IndexPath) if err != nil { return nil, fmt.Errorf("opening database: %w", err) } lc.Append(fx.Hook{ OnStop: func(ctx context.Context) error { return db.Close() }, }) return db, nil }