diff --git a/internal/api/api.go b/internal/api/api.go index c976c8d..6dca25d 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -12,11 +12,24 @@ type ItemDTO struct { id int message string } +type UserDTO struct { + id int +} + +func (user UserDTO) GetId() int { + return user.id +} +func ItemToDTO(item types.IItem) ItemDTO { + var itemDto = ItemDTO{} + itemDto.id = item.GetId() + itemDto.message = item.GetMessage() + return itemDto +} func ItemsToDTOs(items []types.IItem) []ItemDTO { var itemDtos []ItemDTO for _, item := range items { - itemDtos = append(itemDtos, ItemDTO{id: item.GetId(), message: item.GetMessage()}) + itemDtos = append(itemDtos, ItemToDTO(item)) } return itemDtos } @@ -42,10 +55,20 @@ func RegisterRoutes(router *gin.RouterGroup, prov types.IPersitenceProvider) { c.String(http.StatusInternalServerError, err.Error()) return } - c.JSON(http.StatusOK, item.ToDTO()) + c.JSON(http.StatusOK, ItemToDTO(item)) }) router.GET("/itemByUser/:id", func(c *gin.Context) { - + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + c.String(404, err.Error()) + return + } + items, err := prov.GetItemByUser(UserDTO{id: id}) + if err != nil { + c.String(http.StatusInternalServerError, err.Error()) + return + } + c.JSON(http.StatusOK, ItemsToDTOs(items)) }) router.POST("/item", func(c *gin.Context) {}) router.PUT("/item", func(c *gin.Context) {})