package queryapi import ( "fmt" "net/http" "queryorchestration/internal/client" "github.com/labstack/echo/v4" ) func (s *Controllers) CreateClient(ctx echo.Context) error { req := ClientCreate{} if err := ctx.Bind(&req); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) } _, err := s.svc.Client.Create(ctx.Request().Context(), client.CreateParams{ Name: req.Name, ExternalId: req.Id, }) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Unable to create client: %s", err)) } return ctx.JSON(http.StatusCreated, ClientIDBody{ Id: req.Id, }) } func (s *Controllers) GetClient(ctx echo.Context, id ClientID) error { client, err := s.svc.Client.GetByExternalId(ctx.Request().Context(), id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Unable to get client: %s", err)) } return ctx.JSON(http.StatusOK, DocClient{ Id: client.ExternalID, Uid: client.ID, Name: client.Name, CanSync: client.CanSync, }) } func (s *Controllers) UpdateClient(ctx echo.Context, id ClientID) error { req := ClientUpdate{} if err := ctx.Bind(&req); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) } err := s.svc.Client.UpdateByExternalId(ctx.Request().Context(), id, &client.Update{ Name: req.Name, CanSync: req.CanSync, }) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Unable to update query: %s", err)) } return ctx.NoContent(http.StatusOK) }