From 454c9bc82e13e4799e31de1f654953d40ace1daa Mon Sep 17 00:00:00 2001 From: kandrusyak Date: Sun, 16 Jul 2023 15:30:02 +0300 Subject: [PATCH] add org_id and health endpoint --- handler/event.go | 35 ++++++++++++++++++++++++++++++++--- handler/health.go | 14 ++++++++++++++ main.go | 2 ++ model/event.go | 1 + model/service.go | 7 ------- 5 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 handler/health.go delete mode 100644 model/service.go diff --git a/handler/event.go b/handler/event.go index 821e5e4..9f32592 100644 --- a/handler/event.go +++ b/handler/event.go @@ -14,6 +14,7 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) { newEvent := new(model.Event) event := new(model.CreateEvent) authorId, err := strconv.Atoi(c.Request().Header.Get("UserId")) + orgId, err := strconv.Atoi(c.Request().Header.Get("UserOrganizationId")) if err != nil { return c.NoContent(http.StatusUnauthorized) @@ -40,6 +41,7 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) { newEvent.MedicalCardId = event.MedicalCardId newEvent.Status = event.Status newEvent.Services = event.Services + newEvent.OrgId = uint(orgId) tx := h.DB.Create(&newEvent) @@ -57,8 +59,13 @@ func (h *Handler) GetEvents(c echo.Context) (err error) { var events []model.Event query := c.Request().URL.Query() _, _, filterMap := utils.GetFilterParams(query) + orgId, err := strconv.Atoi(c.Request().Header.Get("UserOrganizationId")) - tx := h.DB + if err != nil { + return c.NoContent(http.StatusUnauthorized) + } + + tx := h.DB.Where("org_id = ?", orgId) if len(filterMap) > 0 { tx = tx.Where("start >= ?", filterMap["start"]).Where("\"end\" <= ?", filterMap["end"]) @@ -89,20 +96,42 @@ func (h *Handler) GetEvents(c echo.Context) (err error) { func (h *Handler) GetEvent(c echo.Context) error { var event model.Event id := c.Param("id") + orgId, err := strconv.Atoi(c.Request().Header.Get("UserOrganizationId")) - tx := h.DB.First(&event, id) + if err != nil { + return c.NoContent(http.StatusUnauthorized) + } + + tx := h.DB.Where("org_id = ?", orgId).First(&event, id) if tx.RowsAffected == 0 { return c.NoContent(http.StatusNotFound) } + usersMap, err := services.GetUsers([]uint{event.EmployeeId, event.AuthorId}, c.Request().Header) + + if err != nil { + return c.HTML(http.StatusBadGateway, err.Error()) + } + + employee := usersMap[event.EmployeeId] + author := usersMap[event.AuthorId] + + event.Employee = employee + event.Author = author + return c.JSON(http.StatusOK, event) } func (h *Handler) DeleteEvent(c echo.Context) error { id := c.Param("id") + orgId, err := strconv.Atoi(c.Request().Header.Get("UserOrganizationId")) - tx := h.DB.Delete(&model.Event{}, id) + if err != nil { + return c.NoContent(http.StatusUnauthorized) + } + + tx := h.DB.Where("org_id = ?", orgId).Delete(&model.Event{}, id) if tx.RowsAffected == 0 { return c.NoContent(http.StatusNotFound) diff --git a/handler/health.go b/handler/health.go new file mode 100644 index 0000000..8568623 --- /dev/null +++ b/handler/health.go @@ -0,0 +1,14 @@ +package handler + +import ( + "github.com/labstack/echo/v4" + "net/http" +) + +func Health(c echo.Context) error { + type Resp struct { + Status string `json:"status"` + } + + return c.JSON(http.StatusOK, Resp{Status: "OK"}) +} diff --git a/main.go b/main.go index 6e761b9..de4d086 100644 --- a/main.go +++ b/main.go @@ -45,5 +45,7 @@ func main() { e.GET("/", h.GetEvents) e.DELETE("/", h.DeleteEvent) + e.GET("/health", handler.Health) + e.Logger.Fatal(e.Start(":" + config.Env.Server.Port)) } diff --git a/model/event.go b/model/event.go index dff1ac0..a4b581f 100644 --- a/model/event.go +++ b/model/event.go @@ -20,6 +20,7 @@ type Event struct { MedicalCard Card `json:"medicalCard" gorm:"-"` MedicalCardId uint `json:"-"` Services pq.Int32Array `json:"services" gorm:"type:integer[]"` + OrgId uint `json:"-"` } type CreateEvent struct { diff --git a/model/service.go b/model/service.go deleted file mode 100644 index a714e65..0000000 --- a/model/service.go +++ /dev/null @@ -1,7 +0,0 @@ -package model - -import "gorm.io/gorm" - -type Service struct { - gorm.Model -}