server-state.go (873B)
1 package server 2 3 import ( 4 "context" 5 "fmt" 6 "log/slog" 7 "lyrics/internal/config" 8 "lyrics/internal/db" 9 "lyrics/internal/log" 10 "net/http" 11 ) 12 13 type ServerState struct { 14 config *config.Config 15 logger *slog.Logger 16 db *db.DB 17 staticHandler http.Handler 18 } 19 20 func New(ctx context.Context, config *config.Config) (*ServerState, error) { 21 logger := log.FromContext(ctx) 22 23 db, err := db.New(ctx, config.Core.DbPath) 24 if err != nil { 25 return nil, fmt.Errorf("failed to create db: %w", err) 26 } 27 28 staticHandler, err := Static(config.Core.Dev) 29 if err != nil { 30 return nil, fmt.Errorf("failed to create static handler: %w", err) 31 } 32 33 serverState := &ServerState{ 34 config: config, 35 logger: logger, 36 db: db, 37 staticHandler: staticHandler, 38 } 39 40 return serverState, nil 41 } 42 43 func (s *ServerState) Close() error { 44 return s.db.Close() 45 }