Files
IDP-Backend/cmd/api/main.go

58 lines
1.2 KiB
Go

package main
import (
"context"
"log"
"strconv"
"git.logidex.ru/fakz9/logidex-id/internal/api/auth"
"git.logidex.ru/fakz9/logidex-id/internal/api/user"
"git.logidex.ru/fakz9/logidex-id/internal/config"
"git.logidex.ru/fakz9/logidex-id/internal/db"
"git.logidex.ru/fakz9/logidex-id/internal/hydra_client"
"git.logidex.ru/fakz9/logidex-id/internal/redis"
"github.com/gofiber/fiber/v2"
"go.uber.org/fx"
)
func NewFiberApp(cfg config.Config) *fiber.App {
app := fiber.New()
return app
}
func StartFiberApp(lifecycle fx.Lifecycle, app *fiber.App, cfg config.Config) {
lifecycle.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
go func() {
if err := app.Listen(":" + strconv.Itoa(cfg.App.Port)); err != nil {
log.Fatal(err)
}
}()
return nil
},
OnStop: func(ctx context.Context) error {
return app.Shutdown()
},
})
}
func NewFiberRouter(app *fiber.App) fiber.Router {
return app.Group("/api")
}
func main() {
fx.New(
fx.Provide(
config.NewConfig,
redis.NewRedisClient,
hydra_client.NewHydraClient,
NewFiberApp,
NewFiberRouter,
),
db.Module,
user.Module,
auth.Module,
fx.Invoke(StartFiberApp),
).Run()
}