64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
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"))
|
|
}
|