merch update method refactor
This commit is contained in:
parent
7dd4a6830e
commit
a4097706de
5 changed files with 44 additions and 32 deletions
|
|
@ -134,16 +134,16 @@ func (co *controller) getAllMerch(c *gin.Context) {
|
|||
// @Description Обновить информацию про мерч по его uuid в json-е
|
||||
// @Tags Merch
|
||||
// @Security BearerAuth
|
||||
// @Param body body MerchDTO true "merch_uuid"
|
||||
// @Success 200 {object} MerchDTO
|
||||
// @Param body body UpdateMerchDTO true "merch_uuid"
|
||||
// @Success 200
|
||||
// @Failure 400 {object} responses.ErrorResponse400
|
||||
// @Failure 500 {object} responses.ErrorResponse500
|
||||
// @Router /merch/{uuid} [put]
|
||||
// @Router /merch/ [put]
|
||||
func (co *controller) updateMerch(c *gin.Context) {
|
||||
var payload MerchDTO
|
||||
var payload UpdateMerchDTO
|
||||
if err := c.ShouldBind(&payload); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.ErrorResponse400{Error: err.Error()})
|
||||
log.WithError(err).Error("Merch | Failed to bind JSON on add merch")
|
||||
log.WithError(err).Error("Merch | Failed to bind JSON on update merch")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,3 +46,10 @@ type PricesResponse struct {
|
|||
MerchUuid string `json:"merch_uuid"`
|
||||
Origins []OriginWithPrices `json:"origins"`
|
||||
}
|
||||
|
||||
type UpdateMerchDTO struct {
|
||||
MerchUuid string `json:"merch_uuid"`
|
||||
Name string `json:"name"`
|
||||
Origin string `json:"origin"`
|
||||
Link string `json:"link"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,11 +20,10 @@ func (Merch) TableName() string {
|
|||
}
|
||||
|
||||
type Surugaya struct {
|
||||
Id uint `gorm:"primary_key" json:"-"`
|
||||
DeletedAt sql.NullTime `json:"-"`
|
||||
MerchUuid string `json:"-"`
|
||||
Link string `json:"link"`
|
||||
CookieValues string `json:"cookie_values"`
|
||||
Id uint `gorm:"primary_key" json:"-"`
|
||||
DeletedAt sql.NullTime `json:"-"`
|
||||
MerchUuid string `json:"-"`
|
||||
Link string `json:"link"`
|
||||
}
|
||||
|
||||
func (Surugaya) TableName() string {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ type repository interface {
|
|||
getSingleMerch(userUuid, merchUuid string) (merchBundle, error)
|
||||
getAllMerch(userUuid string) ([]ListResponse, error)
|
||||
|
||||
updateMerch(payload MerchDTO, userUuid string) error
|
||||
updateMerch(payload UpdateMerchDTO, userUuid string) error
|
||||
|
||||
deleteMerch(userUuid, merchUuid string) error
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ func (r *Repo) getAllMerch(userUuid string) ([]ListResponse, error) {
|
|||
return list, nil
|
||||
}
|
||||
|
||||
func (r *Repo) updateMerch(payload MerchDTO, userUuid string) error {
|
||||
func (r *Repo) updateMerch(payload UpdateMerchDTO, userUuid string) error {
|
||||
m := make(map[string]any)
|
||||
m["name"] = payload.Name
|
||||
m["updated_at"] = sql.NullTime{
|
||||
|
|
@ -115,27 +115,24 @@ func (r *Repo) updateMerch(payload MerchDTO, userUuid string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// surugaya
|
||||
fields := make(map[string]any, 2)
|
||||
if payload.OriginSurugaya.Link != "" {
|
||||
fields["link"] = payload.OriginSurugaya.Link
|
||||
}
|
||||
|
||||
if len(fields) > 0 {
|
||||
if err := r.db.
|
||||
Model(&Surugaya{}).
|
||||
Where("merch_uuid = ?", payload.MerchUuid).
|
||||
Updates(fields).Error; err != nil {
|
||||
switch payload.Origin {
|
||||
case "surugaya":
|
||||
var recordSurugaya Surugaya
|
||||
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordSurugaya, Surugaya{
|
||||
MerchUuid: payload.MerchUuid,
|
||||
Link: payload.Link,
|
||||
}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// mandarake
|
||||
if payload.OriginMandarake.Link != "" {
|
||||
if err := r.db.
|
||||
Model(&Mandarake{}).
|
||||
Where("merch_uuid = ?", payload.MerchUuid).
|
||||
Update("link", payload.OriginMandarake.Link).Error; err != nil {
|
||||
case "mandarake":
|
||||
var recordMandarake Mandarake
|
||||
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordMandarake, Mandarake{
|
||||
MerchUuid: payload.MerchUuid,
|
||||
Link: payload.Link,
|
||||
}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,10 +67,19 @@ func (s *service) getAllMerch(userUuid string) ([]ListResponse, error) {
|
|||
return s.repo.getAllMerch(userUuid)
|
||||
}
|
||||
|
||||
func (s *service) updateMerch(payload MerchDTO, userUuid string) error {
|
||||
func (s *service) updateMerch(payload UpdateMerchDTO, userUuid string) error {
|
||||
if payload.MerchUuid == "" {
|
||||
return errors.New("no MerchUuid or empty payload")
|
||||
return errors.New("no merch uuid provided")
|
||||
}
|
||||
|
||||
if payload.Origin == "" {
|
||||
return errors.New("no origin provided")
|
||||
}
|
||||
|
||||
if payload.Link == "" {
|
||||
return errors.New("no link provided")
|
||||
}
|
||||
|
||||
return s.repo.updateMerch(payload, userUuid)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue