Files
mal/internal/app/app.go

54 lines
1.2 KiB
Go

// Package app bootstraps and wires the application dependencies.
package app
import (
"mal/integrations/jikan"
"mal/integrations/playback/allanime"
"mal/internal/anime"
"mal/internal/audit"
"mal/internal/auth"
"mal/internal/config"
"mal/internal/database"
"mal/internal/episodes"
"mal/internal/observability"
"mal/internal/playback"
"mal/internal/server"
"mal/internal/watchlist"
"mal/templates"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/render"
"go.uber.org/fx"
"go.uber.org/fx/fxevent"
)
func NewApp() *fx.App {
return fx.New(
fx.WithLogger(func() fxevent.Logger {
return observability.NewFxLogger()
}),
config.Module,
database.Module,
audit.Module,
jikan.Module,
allanime.Module,
episodes.Module,
auth.Module,
anime.Module,
watchlist.Module,
playback.Module,
templates.Module,
server.Module,
fx.Provide(func(r *templates.Renderer) render.HTMLRender {
return r
}),
fx.Invoke(fx.Annotate(
func(r *gin.Engine, authMiddleware gin.HandlerFunc, registers []server.RouteRegister) {
r.Use(authMiddleware)
server.RegisterRoutes(r, registers)
},
fx.ParamTags(``, ``, `group:"routes"`),
)),
)
}