From c525ad92f25ed3b43d052f6d2c23b8f436de8104 Mon Sep 17 00:00:00 2001 From: Mussie Teshome Date: Sun, 11 Jun 2023 15:57:14 +0300 Subject: [PATCH] SQL Related dbs CRUD implementation for SMS --- .../sql/sms_verification_requests.go | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 server/db/providers/sql/sms_verification_requests.go diff --git a/server/db/providers/sql/sms_verification_requests.go b/server/db/providers/sql/sms_verification_requests.go new file mode 100644 index 0000000..5035c54 --- /dev/null +++ b/server/db/providers/sql/sms_verification_requests.go @@ -0,0 +1,51 @@ +package sql + +import ( + "context" + "time" + + "github.com/authorizerdev/authorizer/server/db/models" + "github.com/google/uuid" + "gorm.io/gorm/clause" +) + +// SMS verification Request +func (p *provider) UpsertSMSRequest(ctx context.Context, smsRequest *models.SMSVerificationRequest) (*models.SMSVerificationRequest, error) { + if smsRequest.ID == "" { + smsRequest.ID = uuid.New().String() + } + + smsRequest.CreatedAt = time.Now().Unix() + smsRequest.UpdatedAt = time.Now().Unix() + + res := p.db.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "phone_number"}}, + DoUpdates: clause.AssignmentColumns([]string{"code", "code_expires_at"}), + }).Create(smsRequest) + if res.Error != nil { + return nil, res.Error + } + + return smsRequest, nil +} + +// GetOTPByEmail to get otp for a given email address +func (p *provider) GetCodeByPhone(ctx context.Context, phoneNumber string) (*models.SMSVerificationRequest, error) { + var sms_verification_request models.SMSVerificationRequest + + result := p.db.Where("phone_number = ?", phoneNumber).First(&sms_verification_request) + if result.Error != nil { + return nil, result.Error + } + return &sms_verification_request, nil +} + +func(p *provider) DeleteSMSRequest(ctx context.Context, smsRequest *models.SMSVerificationRequest) error { + result := p.db.Delete(&models.SMSVerificationRequest{ + ID: smsRequest.ID, + }) + if result.Error != nil { + return result.Error + } + return nil +}