switch update to upsert
This commit is contained in:
parent
a4097706de
commit
4759e7638c
1 changed files with 12 additions and 8 deletions
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/clause"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -117,22 +118,18 @@ func (r *Repo) updateMerch(payload UpdateMerchDTO, userUuid string) error {
|
||||||
|
|
||||||
switch payload.Origin {
|
switch payload.Origin {
|
||||||
case "surugaya":
|
case "surugaya":
|
||||||
var recordSurugaya Surugaya
|
if err := r.upsertOrigin(&Surugaya{
|
||||||
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordSurugaya, Surugaya{
|
|
||||||
MerchUuid: payload.MerchUuid,
|
MerchUuid: payload.MerchUuid,
|
||||||
Link: payload.Link,
|
Link: payload.Link,
|
||||||
}).Error
|
}); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
case "mandarake":
|
case "mandarake":
|
||||||
var recordMandarake Mandarake
|
if err := r.upsertOrigin(&Mandarake{
|
||||||
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordMandarake, Mandarake{
|
|
||||||
MerchUuid: payload.MerchUuid,
|
MerchUuid: payload.MerchUuid,
|
||||||
Link: payload.Link,
|
Link: payload.Link,
|
||||||
}).Error
|
}); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -220,3 +217,10 @@ func (r *Repo) getDistinctPrices(userUuid, merchUuid string, period time.Time) (
|
||||||
}
|
}
|
||||||
return prices, nil
|
return prices, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Repo) upsertOrigin(model any) error {
|
||||||
|
return r.db.Clauses(clause.OnConflict{
|
||||||
|
Columns: []clause.Column{{Name: "merch_uuid"}},
|
||||||
|
DoUpdates: clause.AssignmentColumns([]string{"link"}),
|
||||||
|
}).Create(model).Error
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue