gestion des providers
This commit is contained in:
1 parent
357bf9b41c
commit
4d72952b2c
46 files changed
+995
-150
No files matched your search
@@ -0,0 +1,123 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v5"
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/provider"
|
||||
)
|
||||
|
||||
func NewModelGroup(prefix string, e *echo.Group, service *provider.Service, middlewares ...echo.MiddlewareFunc) *echo.Group {
|
||||
modelHandler := &ModelHandler{
|
||||
providerService: service,
|
||||
}
|
||||
model := e.Group(prefix, middlewares...)
|
||||
|
||||
model.GET("/providerTypes", modelHandler.ListProviderTypes)
|
||||
model.GET("/:space", modelHandler.ListProviders)
|
||||
model.POST("/:space/avalable-models", modelHandler.ListAvailableModels)
|
||||
model.GET("/:space/:provider", modelHandler.GetProvider)
|
||||
model.PUT("/:space", modelHandler.UpdateProvider)
|
||||
model.POST("/:space", modelHandler.CreateProvider)
|
||||
model.DELETE("/:space/:provider", modelHandler.DeleteProvider)
|
||||
|
||||
return model
|
||||
}
|
||||
|
||||
type ModelHandler struct {
|
||||
providerService *provider.Service
|
||||
}
|
||||
|
||||
func (h *ModelHandler) ListProviderTypes(c *echo.Context) error {
|
||||
return c.JSON(http.StatusOK, h.providerService.ListProviderTypes())
|
||||
}
|
||||
|
||||
func (h *ModelHandler) ListProviders(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
providers, err := h.providerService.ListProviders(userID, teamID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error listing providers: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error listing providers")
|
||||
}
|
||||
return c.JSON(http.StatusOK, providers)
|
||||
}
|
||||
|
||||
func (h *ModelHandler) GetProvider(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
providerID := c.Param("provider")
|
||||
provider, err := h.providerService.GetProvider(userID, teamID, providerID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error getting provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error getting provider")
|
||||
}
|
||||
return c.JSON(http.StatusOK, provider)
|
||||
}
|
||||
|
||||
func (h *ModelHandler) CreateProvider(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
var provider domain.Provider
|
||||
err := c.Bind(&provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error binding provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding provider")
|
||||
}
|
||||
provider.TeamID = teamID
|
||||
updprovider, err := h.providerService.CreateProvider(userID, &provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error creating provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error creating provider")
|
||||
}
|
||||
return c.JSON(http.StatusOK, updprovider)
|
||||
}
|
||||
|
||||
func (h *ModelHandler) UpdateProvider(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
var provider domain.Provider
|
||||
err := c.Bind(&provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error binding provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding provider")
|
||||
}
|
||||
provider.TeamID = teamID
|
||||
updprovider, err := h.providerService.UpdateProvider(userID, &provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error updating provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error creating provider")
|
||||
}
|
||||
return c.JSON(http.StatusOK, updprovider)
|
||||
}
|
||||
|
||||
func (h *ModelHandler) DeleteProvider(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
providerID := c.Param("provider")
|
||||
err := h.providerService.DeleteProvider(userID, teamID, providerID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error creating provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error creating provider")
|
||||
}
|
||||
return c.JSON(http.StatusOK, providerID)
|
||||
}
|
||||
|
||||
func (h *ModelHandler) ListAvailableModels(c *echo.Context) error {
|
||||
teamID := c.Param("space")
|
||||
var provider domain.Provider
|
||||
err := c.Bind(&provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error binding provider: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding provider")
|
||||
}
|
||||
provider.TeamID = teamID
|
||||
list, err := h.providerService.ListAvailableModels(c.Request().Context(), &provider)
|
||||
if err != nil {
|
||||
c.Logger().Error("error listing models: %s", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error creating provider")
|
||||
}
|
||||
return c.JSON(http.StatusOK, list)
|
||||
}
|
||||
@@ -13,7 +13,6 @@ func NewUserGroup(prefix string, e *echo.Group, service *user.Service, middlewar
|
||||
userHandler := &UserHandler{
|
||||
userService: service,
|
||||
}
|
||||
_ = userHandler
|
||||
auth := e.Group(prefix, middlewares...)
|
||||
auth.GET("/me", userHandler.Me)
|
||||
auth.PUT("/:id", userHandler.Update)
|
||||
@@ -30,7 +29,7 @@ type UserHandler struct {
|
||||
|
||||
func (h UserHandler) Me(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
user, err := h.userService.GetUser(userID)
|
||||
user, err := h.userService.GetUserWithTeams(userID)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusUnauthorized, err.Error())
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"trankilou.fr/lassistanoque/backend/internal/config"
|
||||
"trankilou.fr/lassistanoque/backend/internal/http/handlers"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/provider"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/storage"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
||||
)
|
||||
@@ -32,10 +33,11 @@ type Router struct {
|
||||
}
|
||||
|
||||
type Dependencies struct {
|
||||
StorageService *storage.Service
|
||||
AuthService *auth.Service
|
||||
UserService *user.Service
|
||||
TokenManager auth.TokenManager
|
||||
StorageService *storage.Service
|
||||
AuthService *auth.Service
|
||||
UserService *user.Service
|
||||
ProviderService *provider.Service
|
||||
TokenManager auth.TokenManager
|
||||
}
|
||||
|
||||
func NewRouter(deps Dependencies) *Router {
|
||||
@@ -71,6 +73,7 @@ func NewRouter(deps Dependencies) *Router {
|
||||
_ = handlers.NewAuthGroup("/auth", api, deps.AuthService)
|
||||
_ = handlers.NewUserGroup("/user", api, deps.UserService, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewMiscGroup("/misc", api, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewModelGroup("/provider", api, deps.ProviderService, deps.TokenManager.TokenMiddleware)
|
||||
|
||||
return &Router{
|
||||
echo: e,
|
||||
|
||||
Reference in new issue
Block a user