package handler import ( "astra-users/model" "astra-users/pkg/utils" "github.com/labstack/echo/v4" "net/http" ) func (h *Handler) CreateOrganization(c echo.Context) (err error) { organization := new(model.OrganizationApi) if err = c.Bind(organization); err != nil { return c.NoContent(http.StatusBadRequest) } newOrg, err := utils.TypeConverter[model.Organization](organization) tx := h.DB.Create(&newOrg) if tx.RowsAffected == 0 { return c.NoContent(http.StatusBadGateway) } return c.JSON(http.StatusCreated, newOrg) } func (h *Handler) GetOrganizations(c echo.Context) error { var organizations []model.Organization h.DB.Find(&organizations) return c.JSON(http.StatusOK, organizations) } func (h *Handler) DeleteOrganization(c echo.Context) error { id := c.Param("id") tx := h.DB.Model(model.Organization{}).Delete(id) if tx.RowsAffected == 0 { return c.NoContent(http.StatusNotFound) } return c.NoContent(http.StatusOK) } func (h *Handler) UpdateOrganization(c echo.Context) (err error) { id := c.Param("id") organization := new(model.OrganizationApi) var newOrganization model.Organization if err = c.Bind(organization); err != nil { return c.NoContent(http.StatusBadRequest) } tx := h.DB.Find(&newOrganization, id) if tx.RowsAffected == 0 { return c.NoContent(http.StatusNotFound) } if organization.Name != "" { newOrganization.Name = organization.Name } if organization.ParentID.ID() != 0 { newOrganization.ParentID = organization.ParentID } tx = tx.Save(&newOrganization) if tx.RowsAffected == 0 { return c.NoContent(http.StatusBadGateway) } return c.NoContent(http.StatusOK) }