From 0364ad2d7dba17a350f94f53889f930108776a06 Mon Sep 17 00:00:00 2001 From: kandrusyak Date: Thu, 3 Aug 2023 00:53:18 +0300 Subject: [PATCH] add request to personal information --- handler/event.go | 12 ++++--- pkg/api/apiCall.go | 10 +++--- services/{pd.go => personal-information.go} | 36 ++++++++++++++++++++- 3 files changed, 48 insertions(+), 10 deletions(-) rename services/{pd.go => personal-information.go} (61%) diff --git a/handler/event.go b/handler/event.go index 2403d25..3267161 100644 --- a/handler/event.go +++ b/handler/event.go @@ -108,14 +108,17 @@ func (h *Handler) GetEvents(c echo.Context) (err error) { tx.Find(&events) - ids := set.New[uuid.UUID](len(events) * 2) + userIds := set.New[uuid.UUID](len(events) * 2) + personIds := set.New[uuid.UUID](len(events)) for _, event := range events { - ids.Insert(event.MedicId) - ids.Insert(event.AuthorId) + userIds.Insert(event.MedicId) + userIds.Insert(event.AuthorId) + personIds.Insert(event.PersonId) } - usersMap, err := services.GetUsers(ids.Slice(), c.Request().Header) + 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()) } @@ -123,6 +126,7 @@ func (h *Handler) GetEvents(c echo.Context) (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) diff --git a/pkg/api/apiCall.go b/pkg/api/apiCall.go index d8ab5a1..712a816 100644 --- a/pkg/api/apiCall.go +++ b/pkg/api/apiCall.go @@ -7,11 +7,11 @@ import ( "net/http" ) -func PostRequest(url string, model any, header http.Header) ([]byte, error) { +func PostRequest(url string, model any, header http.Header) ([]byte, error, *http.Response) { uJson, err := json.Marshal(model) if err != nil { - return nil, err + return nil, err, nil } client := http.Client{} @@ -22,16 +22,16 @@ func PostRequest(url string, model any, header http.Header) ([]byte, error) { resp, err := client.Do(req) if err != nil { - return nil, err + return nil, err, nil } data, err := io.ReadAll(resp.Body) if err != nil { - return nil, err + return nil, err, nil } - return data, nil + return data, nil, resp } func GetRequest(url string, header http.Header, args ...string) ([]byte, error, *http.Response) { diff --git a/services/pd.go b/services/personal-information.go similarity index 61% rename from services/pd.go rename to services/personal-information.go index 5dd6238..f947690 100644 --- a/services/pd.go +++ b/services/personal-information.go @@ -31,7 +31,7 @@ func GetPerson(id uuid.UUID, header http.Header) (*model.PersonalInformation, er } func CreatePerson(person model.PersonalInformationCreate, header http.Header) (*model.PersonalInformation, error) { - data, err := api.PostRequest( + data, err, _ := api.PostRequest( config.Env.MSHosts.PersonsHost+"/persons/", person, header, @@ -50,3 +50,37 @@ func CreatePerson(person model.PersonalInformationCreate, header http.Header) (* return pi, nil } + +func GetPersons(ids []uuid.UUID, header http.Header) (map[uuid.UUID]model.PersonalInformation, error) { + type BatchBody struct { + ids []uuid.UUID + } + + var persons []model.PersonalInformation + personsMap := make(map[uuid.UUID]model.PersonalInformation) + + jsonIds, err := json.Marshal(&BatchBody{ + ids: ids, + }) + + data, err, req := api.PostRequest( + config.Env.MSHosts.PersonsHost+"/persons/batch/", + jsonIds, + header) + + if err != nil || req.StatusCode != 200 { + return nil, err + } + + err = json.Unmarshal(data, &persons) + + if err != nil { + return nil, err + } + + for _, person := range persons { + personsMap[person.ID] = person + } + + return personsMap, nil +}