Gonçalo Rodrigues 13b7149614 First Commit
2026-06-13 11:25:23 +01:00

54 lines
889 B
Go

package main
import (
"context"
"log/slog"
"net/http"
"os"
"os/signal"
"syscall"
"homelab/pkg/logger"
"homelab/pkg/mongo"
"homelab/pkg/setup"
"homelab/pkg/trace"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
logger.Init()
slog.Info("starting finance-api")
shutdown := trace.Init(ctx, "finance-api")
defer shutdown()
db, err := mongo.Connect(ctx)
if err != nil {
slog.Error("mongo connect", "err", err)
os.Exit(1)
}
defer db.Close(ctx)
store := NewStore(db)
handler := NewHandler(store)
mux := http.NewServeMux()
handler.RegisterRoutes(mux)
srv := setup.Default("finance-api", mux)
go func() {
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
<-sigCh
cancel()
}()
if err := srv.Run(ctx); err != nil {
slog.Error("server error", "err", err)
os.Exit(1)
}
}