leaf-library-3/internal/api/http/provider.go
2024-12-07 02:44:32 +08:00

69 lines
1.7 KiB
Go

package http
import (
"github.com/gofiber/fiber/v2"
"github.com/google/wire"
"leafdev.top/Leaf/leaf-library-3/internal/api/http/controller"
"leafdev.top/Leaf/leaf-library-3/internal/api/http/middleware"
"leafdev.top/Leaf/leaf-library-3/internal/base/conf"
"leafdev.top/Leaf/leaf-library-3/internal/base/logger"
"leafdev.top/Leaf/leaf-library-3/internal/services/auth"
)
type IMiddleware interface {
Handler() fiber.Handler
}
type Middleware struct {
Logger IMiddleware
Auth IMiddleware
JSONResponse IMiddleware
RBAC *middleware.RBAC
}
type Handlers struct {
// User *v1.UserController
Workspace *controller.WorkspaceController
Collection *controller.CollectionController
Document *controller.DocumentController
}
func NewHandler(
workspace *controller.WorkspaceController,
collection *controller.CollectionController,
document *controller.DocumentController,
) *Handlers {
return &Handlers{
Workspace: workspace,
Collection: collection,
Document: document,
}
}
func NewMiddleware(config *conf.Config, logger *logger.Logger, authService *auth.Service) *Middleware {
return &Middleware{
Logger: middleware.NewLogger(logger.Logger),
Auth: middleware.NewAuth(config, authService),
JSONResponse: middleware.NewJSONResponse(),
RBAC: middleware.NewRBAC(authService, config),
}
}
var ProviderSet = wire.NewSet(
// Init Middleware
middleware.NewAuth,
middleware.NewLogger,
middleware.NewJSONResponse,
middleware.NewRBAC,
NewMiddleware,
// Init Controller
// controller.NewUserController,
controller.NewWorkspaceController,
controller.NewCollectionController,
controller.NewDocumentController,
// Init Handler
NewHandler,
)