lyrics

lyrics
git clone git://brookjeynes.dev/bjeynes/lyrics.git
Log | Files | Refs

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 }