Files
FlexSupport/app.go
2025-12-11 16:29:13 -07:00

42 lines
955 B
Go

package main
import (
"context"
"fmt"
"io"
"log/slog"
"net/http"
"strings"
cfg "flexsupport/internal/config"
db "flexsupport/internal/domain"
"flexsupport/internal/lib/logger"
"flexsupport/internal/router"
)
var log *slog.Logger
func App(ctx context.Context, stdout io.Writer, getenv func(string, string) string) error {
config := cfg.New(getenv)
local := config.Environment != cfg.PROD
ctx, cancel := context.WithCancel(ctx)
defer cancel()
logLevel := config.LogLevel
if logLevel == "" {
logLevel = "debug"
}
logOptions := logger.LogOptions(strings.TrimSpace(strings.ToLower(logLevel)), config.VerboseLogging, local)
switch local {
case true:
log = slog.New(slog.NewTextHandler(stdout, logOptions))
default:
log = slog.New(slog.NewJSONHandler(stdout, logOptions))
}
r := router.NewRouter(log, config)
db.NewDB(ctx, config.DatabaseUrl)
fmt.Println("Starting server on :8080")
return http.ListenAndServe(":8080", r)
}