switch update to upsert

This commit is contained in:
nquidox 2025-10-01 12:13:43 +03:00
parent a4097706de
commit 4759e7638c

View file

@ -4,6 +4,7 @@ import (
"database/sql"
"errors"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"time"
)
@ -117,22 +118,18 @@ func (r *Repo) updateMerch(payload UpdateMerchDTO, userUuid string) error {
switch payload.Origin {
case "surugaya":
var recordSurugaya Surugaya
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordSurugaya, Surugaya{
if err := r.upsertOrigin(&Surugaya{
MerchUuid: payload.MerchUuid,
Link: payload.Link,
}).Error
if err != nil {
}); err != nil {
return err
}
case "mandarake":
var recordMandarake Mandarake
err := r.db.Where("merch_uuid = ?", payload.MerchUuid).FirstOrCreate(&recordMandarake, Mandarake{
if err := r.upsertOrigin(&Mandarake{
MerchUuid: payload.MerchUuid,
Link: payload.Link,
}).Error
if err != nil {
}); err != nil {
return err
}
}
@ -220,3 +217,10 @@ func (r *Repo) getDistinctPrices(userUuid, merchUuid string, period time.Time) (
}
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
}