add today endpoint

This commit is contained in:
kandrusyak
2023-08-16 21:21:05 +03:00
parent 2054c44aa2
commit 11c0d1b989
3 changed files with 126 additions and 22 deletions

View File

@@ -8,7 +8,9 @@ import (
"github.com/google/uuid"
"github.com/hashicorp/go-set"
"github.com/labstack/echo/v4"
"gorm.io/gorm"
"net/http"
"time"
)
// swagger:route POST /events/ Events CreateEvent
@@ -91,7 +93,6 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
// 200: []Event
func (h *Handler) GetEvents(c echo.Context) (err error) {
var events []model.Event
query := c.Request().URL.Query()
orgId, err := uuid.Parse(c.Request().Header.Get("X-User-Organization-Id"))
@@ -105,30 +106,29 @@ func (h *Handler) GetEvents(c echo.Context) (err error) {
tx = tx.Where("start >= ?", query.Get("start")).Where("\"end\" <= ?", query.Get("end"))
}
tx.Find(&events)
return h.queryEvents(tx, c)
}
userIds := set.New[uuid.UUID](len(events) * 2)
personIds := set.New[uuid.UUID](len(events))
// swagger:route GET /events/today Events GetEventsToday
//
// responses:
// 200: []Event
for _, event := range events {
userIds.Insert(event.MedicId)
userIds.Insert(event.AuthorId)
personIds.Insert(event.PersonId)
}
func (h *Handler) GetEventsToday(c echo.Context) (err error) {
orgId, err := uuid.Parse(c.Request().Header.Get("X-User-Organization-Id"))
usersMap, err := services.GetUsers(userIds.Slice(), c.Request().Header)
personsMap, err := services.GetPersons(personIds.Slice(), c.Request().Header)
if err != nil {
return c.HTML(http.StatusBadGateway, err.Error())
return c.NoContent(http.StatusUnauthorized)
}
for i, event := range events {
events[i].Author = usersMap[event.AuthorId]
events[i].Medic = usersMap[event.MedicId]
events[i].Person = personsMap[event.PersonId]
}
tx := h.DB.Where("org_id = ?", orgId)
return c.JSON(http.StatusOK, events)
currentDate := time.Now().Format(time.DateOnly)
nextDate := time.Now().Add(24 * time.Hour).Format(time.DateOnly)
tx = tx.Where("start >= ?", currentDate).Where("\"end\" < ?", nextDate)
return h.queryEvents(tx, c)
}
// swagger:route GET /events/{uuid} Events GetEvent
@@ -187,3 +187,31 @@ func (h *Handler) DeleteEvent(c echo.Context) error {
return c.NoContent(http.StatusOK)
}
func (h *Handler) queryEvents(tx *gorm.DB, c echo.Context) error {
var events []model.Event
tx.Find(&events)
userIds := set.New[uuid.UUID](len(events) * 2)
personIds := set.New[uuid.UUID](len(events))
for _, event := range events {
userIds.Insert(event.MedicId)
userIds.Insert(event.AuthorId)
personIds.Insert(event.PersonId)
}
usersMap, err := services.GetUsers(userIds.Slice(), c.Request().Header)
personsMap, err := services.GetPersons(personIds.Slice(), c.Request().Header)
if err != nil {
return c.HTML(http.StatusBadGateway, err.Error())
}
for i, event := range events {
events[i].Author = usersMap[event.AuthorId]
events[i].Medic = usersMap[event.MedicId]
events[i].Person = personsMap[event.PersonId]
}
return c.JSON(http.StatusOK, events)
}