From 5558e0001ae45e290432e78bef55bbb0fff2d190 Mon Sep 17 00:00:00 2001 From: Samuel Pua Date: Fri, 21 Oct 2022 01:00:34 +0800 Subject: [PATCH] Fix(profile): Upsert based on user_id --- backend/internal/user/profilecontroller.go | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/backend/internal/user/profilecontroller.go b/backend/internal/user/profilecontroller.go index d90013c..3d92ec0 100644 --- a/backend/internal/user/profilecontroller.go +++ b/backend/internal/user/profilecontroller.go @@ -2,25 +2,30 @@ package user import ( "log" - - "gorm.io/gorm/clause" ) func (env *Env) setProfile(currUser *User, ktmTrainUsername string, ktmTrainPassword string, ktmTrainCreditCardType string, ktmTrainCreditCard string, ktmTrainCreditCardExpiry string, ktmTrainCreditCardCVV string) (*User, error) { - profile := &Profile{ - UserID: currUser.ID, - KtmTrainUsername: ktmTrainUsername, - KtmTrainPassword: ktmTrainPassword, - KtmTrainCreditCardType: ktmTrainCreditCardType, - KtmTrainCreditCard: ktmTrainCreditCard, - KtmTrainCreditCardExpiry: ktmTrainCreditCardExpiry, - KtmTrainCreditCardCVV: ktmTrainCreditCardCVV, + profile := &Profile{} + + err := env.DB.Where(&Profile{UserID: currUser.ID}).FirstOrInit(profile).Error + if err != nil { + log.Println("Error initialising profile", err) + log.Println(err) + return nil, err } - if err := env.DB.Clauses(clause.OnConflict{ - UpdateAll: true, - }).Create(profile).Error; err != nil { + profile.UserID = currUser.ID + profile.KtmTrainUsername = ktmTrainUsername + profile.KtmTrainPassword = ktmTrainPassword + profile.KtmTrainCreditCardType = ktmTrainCreditCardType + profile.KtmTrainCreditCard = ktmTrainCreditCard + profile.KtmTrainCreditCardExpiry = ktmTrainCreditCardExpiry + profile.KtmTrainCreditCardCVV = ktmTrainCreditCardCVV + + err = env.DB.Save(profile).Error + if err != nil { log.Println("Error creating profile", err) + log.Println(err) return nil, err }