diff --git a/internal/api/merch/controller.go b/internal/api/merch/controller.go index 47d774d..994c677 100644 --- a/internal/api/merch/controller.go +++ b/internal/api/merch/controller.go @@ -231,10 +231,6 @@ func (co *controller) deleteMerch(c *gin.Context) { // @Failure 400 {object} responses.ErrorResponse400 // @Failure 500 {object} responses.ErrorResponse500 // @Router /prices [get] -// -// @Failure 400 {object} responses.ErrorResponse400 -// @Failure 500 {object} responses.ErrorResponse500 -// @Router /prices [get] func (co *controller) getChartsPrices(c *gin.Context) { daysQuery := strings.ToLower(c.DefaultQuery("days", "")) diff --git a/internal/api/merch/dto.go b/internal/api/merch/dto.go index d1bee26..c64787e 100644 --- a/internal/api/merch/dto.go +++ b/internal/api/merch/dto.go @@ -21,7 +21,8 @@ type MerchDTO struct { } type OriginDTO struct { - Link string `json:"link"` + Link string `json:"link"` + Name origins.Origin `json:"name,omitempty"` } type SurugayaDTO struct { @@ -37,9 +38,9 @@ type AmiamiDTO struct { } type SingleMerchResponse struct { - MerchUuid string `json:"merch_uuid"` - Name string `json:"name"` - Origins []any `json:"origins"` + MerchUuid string `json:"merch_uuid"` + Name string `json:"name"` + Origins []OriginDTO `json:"origins"` } type ListResponse struct { diff --git a/internal/api/merch/model.go b/internal/api/merch/model.go index b6dc584..702edf0 100644 --- a/internal/api/merch/model.go +++ b/internal/api/merch/model.go @@ -27,7 +27,7 @@ type Price struct { DeletedAt sql.NullTime `json:"deleted_at,omitempty" gorm:"column:deleted_at"` MerchUuid string `json:"merch_uuid" gorm:"column:merch_uuid"` Price int `json:"price" gorm:"column:price"` - Origin origins.Origin `json:"origin" gorm:"column:origins;type:integer"` + Origin origins.Origin `json:"origin" gorm:"column:origin;type:integer"` } type Label struct { diff --git a/internal/api/merch/repository.go b/internal/api/merch/repository.go index bff25b4..7283fa9 100644 --- a/internal/api/merch/repository.go +++ b/internal/api/merch/repository.go @@ -230,7 +230,7 @@ func (r *Repo) getAllUserMerch(userUuid string) (merchList []Merch, err error) { func (r *Repo) getPricesWithDays(userUuid string, period time.Time) (prices []Price, err error) { err = r.db.Raw(` - SELECT p.created_at, p.merch_uuid, p.price, p.origins + SELECT p.created_at, p.merch_uuid, p.price, p.origin FROM prices AS p JOIN merch AS m ON m.merch_uuid = p.merch_uuid WHERE m.user_uuid = ? @@ -248,9 +248,9 @@ func (r *Repo) getPricesWithDays(userUuid string, period time.Time) (prices []Pr func (r *Repo) getDistinctPrices(userUuid, merchUuid string, period time.Time) (prices []Price, err error) { err = r.db.Raw(` - SELECT price, created_at, origins + SELECT price, created_at, origin FROM ( - SELECT DISTINCT ON (price) price, created_at, origins + SELECT DISTINCT ON (price) price, created_at, origin FROM prices WHERE merch_uuid = ? AND created_at > ? diff --git a/internal/api/merch/service.go b/internal/api/merch/service.go index 11b303e..e5ef790 100644 --- a/internal/api/merch/service.go +++ b/internal/api/merch/service.go @@ -75,30 +75,33 @@ func (s *service) addMerch(payload MerchDTO, userUuid string) error { return s.repo.addMerch(bundle) } -func (s *service) getSingleMerch(userUuid, merchUuid string) (MerchDTO, error) { +func (s *service) getSingleMerch(userUuid, merchUuid string) (SingleMerchResponse, error) { bundle, err := s.repo.getSingleMerch(userUuid, merchUuid) if err != nil { - return MerchDTO{}, err + return SingleMerchResponse{}, err } - return MerchDTO{ + var originsSlice []OriginDTO + + originsSlice = append(originsSlice, OriginDTO{ + Link: bundle.Surugaya.Link, + Name: origins.Surugaya, + }) + + originsSlice = append(originsSlice, OriginDTO{ + Link: bundle.Mandarake.Link, + Name: origins.Mandarake, + }) + + originsSlice = append(originsSlice, OriginDTO{ + Link: bundle.Amiami.Link, + Name: origins.Amiami, + }) + + return SingleMerchResponse{ MerchUuid: bundle.Merch.MerchUuid, Name: bundle.Merch.Name, - OriginSurugaya: SurugayaDTO{ - OriginDTO{ - Link: bundle.Surugaya.Link, - }, - }, - OriginMandarake: MandarakeDTO{ - OriginDTO{ - Link: bundle.Mandarake.Link, - }, - }, - OriginAmiami: AmiamiDTO{ - OriginDTO{ - Link: bundle.Amiami.Link, - }, - }, + Origins: originsSlice, }, nil }