package main import ( "context" "log" "log/slog" "os" "time" "git.kocoder.xyz/kocoded/vt/routers" "git.kocoder.xyz/kocoded/vt/utils" "github.com/gofiber/contrib/websocket" "github.com/gofiber/fiber/v2" "github.com/joho/godotenv" ) func main() { logger := slog.New(slog.NewTextHandler(os.Stdout, nil)) err := godotenv.Load() if err != nil { logger.Error("Error Loading Environment variables! ", "error", err) } db := utils.SetupDatabase(os.Getenv("DB_DSN"), logger) cache, ok := utils.SetupCache(os.Getenv("VALKEY_HOST"), os.Getenv("VALKEY_PORT"), os.Getenv("VALKEY_USER"), os.Getenv("VALKEY_PASS")) if !ok { logger.Error("Configuring and connecting to Valkey failed!") } appCtx := utils.Application{Logger: logger, DB: db, Client: cache} app := fiber.New() utils.RegisterMiddlewares(app) utils.CreateOIDCClient(context.Background(), app, appCtx) routers.RegisterMandantRouter(app.Group("/v1/mandant"), appCtx) routers.RegisterAnsprechpartnerRouter(app.Group("/v1/ansprechpartner"), appCtx) routers.RegisterFirmaRouter(app.Group("/v1/firma"), appCtx) routers.RegisterProjectRouter(app.Group("/v1/projects"), appCtx) routers.RegisterUserRouter(app.Group("/v1/users"), appCtx) app.Use("/ws", func(c *fiber.Ctx) error { if websocket.IsWebSocketUpgrade(c) { c.Locals("allowed", true) return c.Next() } return fiber.ErrUpgradeRequired }) app.Get("/ws", websocket.New(func(c *websocket.Conn) { go func() { time.Sleep(time.Second) }() utils.MessageBus.AddConn(1, c) })) log.Fatalln(app.Listen(":3000")) }