add org_id and health endpoint

This commit is contained in:
kandrusyak
2023-07-16 15:30:02 +03:00
parent ee38811709
commit 454c9bc82e
5 changed files with 49 additions and 10 deletions

View File

@@ -14,6 +14,7 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
newEvent := new(model.Event) newEvent := new(model.Event)
event := new(model.CreateEvent) event := new(model.CreateEvent)
authorId, err := strconv.Atoi(c.Request().Header.Get("UserId")) authorId, err := strconv.Atoi(c.Request().Header.Get("UserId"))
orgId, err := strconv.Atoi(c.Request().Header.Get("UserOrganizationId"))
if err != nil { if err != nil {
return c.NoContent(http.StatusUnauthorized) return c.NoContent(http.StatusUnauthorized)
@@ -40,6 +41,7 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
newEvent.MedicalCardId = event.MedicalCardId newEvent.MedicalCardId = event.MedicalCardId
newEvent.Status = event.Status newEvent.Status = event.Status
newEvent.Services = event.Services newEvent.Services = event.Services
newEvent.OrgId = uint(orgId)
tx := h.DB.Create(&newEvent) tx := h.DB.Create(&newEvent)
@@ -57,8 +59,13 @@ func (h *Handler) GetEvents(c echo.Context) (err error) {
var events []model.Event var events []model.Event
query := c.Request().URL.Query() query := c.Request().URL.Query()
_, _, filterMap := utils.GetFilterParams(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 { if len(filterMap) > 0 {
tx = tx.Where("start >= ?", filterMap["start"]).Where("\"end\" <= ?", filterMap["end"]) 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 { func (h *Handler) GetEvent(c echo.Context) error {
var event model.Event var event model.Event
id := c.Param("id") 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 { if tx.RowsAffected == 0 {
return c.NoContent(http.StatusNotFound) 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) return c.JSON(http.StatusOK, event)
} }
func (h *Handler) DeleteEvent(c echo.Context) error { func (h *Handler) DeleteEvent(c echo.Context) error {
id := c.Param("id") 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 { if tx.RowsAffected == 0 {
return c.NoContent(http.StatusNotFound) return c.NoContent(http.StatusNotFound)

14
handler/health.go Normal file
View File

@@ -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"})
}

View File

@@ -45,5 +45,7 @@ func main() {
e.GET("/", h.GetEvents) e.GET("/", h.GetEvents)
e.DELETE("/", h.DeleteEvent) e.DELETE("/", h.DeleteEvent)
e.GET("/health", handler.Health)
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port)) e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
} }

View File

@@ -20,6 +20,7 @@ type Event struct {
MedicalCard Card `json:"medicalCard" gorm:"-"` MedicalCard Card `json:"medicalCard" gorm:"-"`
MedicalCardId uint `json:"-"` MedicalCardId uint `json:"-"`
Services pq.Int32Array `json:"services" gorm:"type:integer[]"` Services pq.Int32Array `json:"services" gorm:"type:integer[]"`
OrgId uint `json:"-"`
} }
type CreateEvent struct { type CreateEvent struct {

View File

@@ -1,7 +0,0 @@
package model
import "gorm.io/gorm"
type Service struct {
gorm.Model
}