package web import ( "context" "log/slog" "net/http" "nfeeder/db" ) const ( MAX_USER_SESSIONS = 3 ISSUER = "nfeeder-app" ) type Server struct { httpServer *http.Server logger *slog.Logger store *db.Store jwtSecret []byte } func NewServer(store *db.Store, logger *slog.Logger, secret string) *Server { s := &Server{ store: store, logger: logger, // could extend this to something more generic will do if more fields needed jwtSecret: []byte(secret), } s.httpServer = &http.Server{ Handler: s.setupRoutes(), } return s } func (s *Server) Start(addr string) error { s.httpServer.Addr = addr s.logger.Info("server starting", "addr", addr) return s.httpServer.ListenAndServe() } func (s *Server) Shutdown(ctx context.Context) error { s.logger.Info("shutting down http server") return s.httpServer.Shutdown(ctx) }