From 15a4be543173a5bb9c3f4d4bb920305728cc55fc Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Mon, 31 Jul 2023 16:42:11 +0530 Subject: [PATCH] fix: refs for db provider and few utils --- .../db/providers/arangodb/email_template.go | 17 +++--- server/db/providers/arangodb/env.go | 8 +-- server/db/providers/arangodb/session.go | 2 +- server/db/providers/arangodb/user.go | 42 ++++--------- .../arangodb/verification_requests.go | 21 +++---- server/db/providers/arangodb/webhook.go | 17 +++--- server/db/providers/arangodb/webhook_log.go | 8 +-- .../providers/cassandradb/email_template.go | 16 ++--- server/db/providers/cassandradb/env.go | 8 +-- server/db/providers/cassandradb/session.go | 2 +- server/db/providers/cassandradb/user.go | 35 +++++------ .../cassandradb/verification_requests.go | 21 ++++--- server/db/providers/cassandradb/webhook.go | 16 ++--- .../db/providers/cassandradb/webhook_log.go | 10 ++-- .../db/providers/couchbase/email_template.go | 16 +++-- server/db/providers/couchbase/env.go | 8 +-- server/db/providers/couchbase/session.go | 2 +- server/db/providers/couchbase/user.go | 27 ++++----- .../couchbase/verification_requests.go | 23 ++++---- server/db/providers/couchbase/webhook.go | 14 ++--- server/db/providers/couchbase/webhook_log.go | 8 +-- .../db/providers/dynamodb/email_template.go | 17 +++--- server/db/providers/dynamodb/env.go | 8 +-- server/db/providers/dynamodb/session.go | 2 +- server/db/providers/dynamodb/user.go | 59 +++++-------------- .../dynamodb/verification_requests.go | 18 +++--- server/db/providers/dynamodb/webhook.go | 14 ++--- server/db/providers/dynamodb/webhook_log.go | 8 +-- server/db/providers/mongodb/email_template.go | 14 ++--- server/db/providers/mongodb/env.go | 8 +-- server/db/providers/mongodb/session.go | 2 +- server/db/providers/mongodb/user.go | 44 ++++---------- .../mongodb/verification_requests.go | 18 +++--- server/db/providers/mongodb/webhook.go | 14 ++--- server/db/providers/mongodb/webhook_log.go | 8 +-- .../provider_template/email_template.go | 6 +- server/db/providers/provider_template/env.go | 8 +-- .../db/providers/provider_template/session.go | 2 +- server/db/providers/provider_template/user.go | 23 +++----- .../verification_requests.go | 14 ++--- .../db/providers/provider_template/webhook.go | 6 +- .../provider_template/webhook_log.go | 4 +- server/db/providers/providers.go | 46 +++++++-------- server/db/providers/sql/email_template.go | 16 +++-- server/db/providers/sql/env.go | 11 ++-- server/db/providers/sql/provider.go | 2 +- server/db/providers/sql/session.go | 2 +- server/db/providers/sql/user.go | 27 ++++----- .../db/providers/sql/verification_requests.go | 31 +++------- server/db/providers/sql/webhook.go | 10 ++-- server/db/providers/sql/webhook_log.go | 6 +- server/env/persist_env.go | 5 +- server/handlers/oauth_callback.go | 41 +++++++------ server/handlers/verify_email.go | 3 +- server/resolvers/add_email_template.go | 2 +- server/resolvers/add_webhook.go | 2 +- server/resolvers/email_templates.go | 1 - server/resolvers/forgot_password.go | 2 +- server/resolvers/invite_members.go | 4 +- server/resolvers/login.go | 2 +- server/resolvers/magic_link_login.go | 4 +- server/resolvers/mobile_login.go | 8 +-- server/resolvers/mobile_signup.go | 4 +- server/resolvers/resend_otp.go | 7 +-- server/resolvers/resend_verify_email.go | 2 +- server/resolvers/signup.go | 6 +- server/resolvers/update_email_template.go | 2 +- server/resolvers/update_profile.go | 2 +- server/resolvers/update_user.go | 2 +- server/resolvers/update_webhook.go | 2 +- server/resolvers/verification_requests.go | 1 - server/resolvers/verify_email.go | 2 +- server/resolvers/verify_otp.go | 9 +-- server/resolvers/webhook_logs.go | 4 +- server/resolvers/webhooks.go | 1 - server/test/delete_email_template_test.go | 4 +- server/test/delete_webhook_test.go | 6 +- server/test/update_all_users_tests.go | 6 +- server/test/validate_jwt_token_test.go | 2 +- server/token/auth_token.go | 10 ++-- server/utils/pagination.go | 4 +- server/utils/webhook.go | 8 +-- 82 files changed, 394 insertions(+), 533 deletions(-) diff --git a/server/db/providers/arangodb/email_template.go b/server/db/providers/arangodb/email_template.go index 8134cbe..d668a75 100644 --- a/server/db/providers/arangodb/email_template.go +++ b/server/db/providers/arangodb/email_template.go @@ -12,7 +12,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() emailTemplate.Key = emailTemplate.ID @@ -31,7 +31,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { emailTemplate.UpdatedAt = time.Now().Unix() emailTemplateCollection, _ := p.db.Collection(ctx, models.Collections.EmailTemplate) @@ -46,23 +46,20 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { emailTemplates := []*model.EmailTemplate{} - query := fmt.Sprintf("FOR d in %s SORT d.created_at DESC LIMIT %d, %d RETURN d", models.Collections.EmailTemplate, pagination.Offset, pagination.Limit) - sctx := arangoDriver.WithQueryFullCount(ctx) cursor, err := p.db.Query(sctx, query, nil) if err != nil { return nil, err } defer cursor.Close() - paginationClone := pagination paginationClone.Total = cursor.Statistics().FullCount() for { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate meta, err := cursor.ReadDocument(ctx, &emailTemplate) if arangoDriver.IsNoMoreDocuments(err) { @@ -77,14 +74,14 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: emailTemplates, }, nil } // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate query := fmt.Sprintf("FOR d in %s FILTER d._key == @email_template_id RETURN d", models.Collections.EmailTemplate) bindVars := map[string]interface{}{ "email_template_id": emailTemplateID, @@ -113,7 +110,7 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate query := fmt.Sprintf("FOR d in %s FILTER d.event_name == @event_name RETURN d", models.Collections.EmailTemplate) bindVars := map[string]interface{}{ "event_name": eventName, diff --git a/server/db/providers/arangodb/env.go b/server/db/providers/arangodb/env.go index 29687a8..1bc8162 100644 --- a/server/db/providers/arangodb/env.go +++ b/server/db/providers/arangodb/env.go @@ -12,7 +12,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() env.Key = env.ID @@ -31,7 +31,7 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() collection, _ := p.db.Collection(ctx, models.Collections.Env) meta, err := collection.UpdateDocument(ctx, env.Key, env) @@ -45,8 +45,8 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env query := fmt.Sprintf("FOR d in %s RETURN d", models.Collections.Env) cursor, err := p.db.Query(ctx, query, nil) diff --git a/server/db/providers/arangodb/session.go b/server/db/providers/arangodb/session.go index 9bc46ca..5672b73 100644 --- a/server/db/providers/arangodb/session.go +++ b/server/db/providers/arangodb/session.go @@ -9,7 +9,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() session.Key = session.ID diff --git a/server/db/providers/arangodb/user.go b/server/db/providers/arangodb/user.go index cccbf94..c5572c0 100644 --- a/server/db/providers/arangodb/user.go +++ b/server/db/providers/arangodb/user.go @@ -18,7 +18,7 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() user.Key = user.ID @@ -52,7 +52,7 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() collection, _ := p.db.Collection(ctx, models.Collections.User) @@ -67,7 +67,7 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { collection, _ := p.db.Collection(ctx, models.Collections.User) _, err := collection.RemoveDocument(ctx, user.Key) if err != nil { @@ -88,7 +88,7 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { var users []*model.User sctx := arangoDriver.WithQueryFullCount(ctx) @@ -104,41 +104,36 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( paginationClone.Total = cursor.Statistics().FullCount() for { - var user models.User + var user *models.User meta, err := cursor.ReadDocument(ctx, &user) - if arangoDriver.IsNoMoreDocuments(err) { break } else if err != nil { return nil, err } - if meta.Key != "" { users = append(users, user.AsAPIUser()) } } return &model.Users{ - Pagination: &paginationClone, + Pagination: paginationClone, Users: users, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("FOR d in %s FILTER d.email == @email RETURN d", models.Collections.User) bindVars := map[string]interface{}{ "email": email, } - cursor, err := p.db.Query(ctx, query, bindVars) if err != nil { return user, err } defer cursor.Close() - for { if !cursor.HasMore() { if user.Key == "" { @@ -151,25 +146,21 @@ func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.Use return user, err } } - return user, nil } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("FOR d in %s FILTER d._id == @id LIMIT 1 RETURN d", models.Collections.User) bindVars := map[string]interface{}{ "id": id, } - cursor, err := p.db.Query(ctx, query, bindVars) if err != nil { return user, err } defer cursor.Close() - for { if !cursor.HasMore() { if user.Key == "" { @@ -182,7 +173,6 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err return user, err } } - return user, nil } @@ -191,12 +181,10 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, ids []string) error { // set updated_at time for all users data["updated_at"] = time.Now().Unix() - userInfoBytes, err := json.Marshal(data) if err != nil { return err } - query := "" if len(ids) > 0 { keysArray := "" @@ -209,30 +197,25 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, } else { query = fmt.Sprintf("FOR u IN %s UPDATE u._key with %s IN %s", models.Collections.User, string(userInfoBytes), models.Collections.User) } - _, err = p.db.Query(ctx, query, nil) if err != nil { return err } - return nil } // GetUserByPhoneNumber to get user information from database using phone number func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { - var user models.User - + var user *models.User query := fmt.Sprintf("FOR d in %s FILTER d.phone_number == @phone_number RETURN d", models.Collections.User) bindVars := map[string]interface{}{ "phone_number": phoneNumber, } - cursor, err := p.db.Query(ctx, query, bindVars) if err != nil { return nil, err } defer cursor.Close() - for { if !cursor.HasMore() { if user.Key == "" { @@ -245,6 +228,5 @@ func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) return nil, err } } - - return &user, nil + return user, nil } diff --git a/server/db/providers/arangodb/verification_requests.go b/server/db/providers/arangodb/verification_requests.go index f69bcb0..0bbdad4 100644 --- a/server/db/providers/arangodb/verification_requests.go +++ b/server/db/providers/arangodb/verification_requests.go @@ -12,7 +12,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() verificationRequest.Key = verificationRequest.ID @@ -32,8 +32,8 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest query := fmt.Sprintf("FOR d in %s FILTER d.token == @token LIMIT 1 RETURN d", models.Collections.VerificationRequest) bindVars := map[string]interface{}{ "token": token, @@ -62,8 +62,8 @@ func (p *provider) GetVerificationRequestByToken(ctx context.Context, token stri } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest query := fmt.Sprintf("FOR d in %s FILTER d.email == @email FILTER d.identifier == @identifier LIMIT 1 RETURN d", models.Collections.VerificationRequest) bindVars := map[string]interface{}{ @@ -94,22 +94,19 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { var verificationRequests []*model.VerificationRequest sctx := arangoDriver.WithQueryFullCount(ctx) query := fmt.Sprintf("FOR d in %s SORT d.created_at DESC LIMIT %d, %d RETURN d", models.Collections.VerificationRequest, pagination.Offset, pagination.Limit) - cursor, err := p.db.Query(sctx, query, nil) if err != nil { return nil, err } defer cursor.Close() - paginationClone := pagination paginationClone.Total = cursor.Statistics().FullCount() - for { - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest meta, err := cursor.ReadDocument(ctx, &verificationRequest) if arangoDriver.IsNoMoreDocuments(err) { @@ -126,12 +123,12 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode return &model.VerificationRequests{ VerificationRequests: verificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { collection, _ := p.db.Collection(ctx, models.Collections.VerificationRequest) _, err := collection.RemoveDocument(ctx, verificationRequest.Key) if err != nil { diff --git a/server/db/providers/arangodb/webhook.go b/server/db/providers/arangodb/webhook.go index 73cefad..b9fa5fe 100644 --- a/server/db/providers/arangodb/webhook.go +++ b/server/db/providers/arangodb/webhook.go @@ -14,7 +14,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() webhook.Key = webhook.ID @@ -33,7 +33,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -50,11 +50,9 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { webhooks := []*model.Webhook{} - query := fmt.Sprintf("FOR d in %s SORT d.created_at DESC LIMIT %d, %d RETURN d", models.Collections.Webhook, pagination.Offset, pagination.Limit) - sctx := arangoDriver.WithQueryFullCount(ctx) cursor, err := p.db.Query(sctx, query, nil) if err != nil { @@ -64,9 +62,8 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) paginationClone := pagination paginationClone.Total = cursor.Statistics().FullCount() for { - var webhook models.Webhook + var webhook *models.Webhook meta, err := cursor.ReadDocument(ctx, &webhook) - if arangoDriver.IsNoMoreDocuments(err) { break } else if err != nil { @@ -79,14 +76,14 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) } return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: webhooks, }, nil } // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { - var webhook models.Webhook + var webhook *models.Webhook query := fmt.Sprintf("FOR d in %s FILTER d._key == @webhook_id RETURN d", models.Collections.Webhook) bindVars := map[string]interface{}{ "webhook_id": webhookID, @@ -124,7 +121,7 @@ func (p *provider) GetWebhookByEventName(ctx context.Context, eventName string) defer cursor.Close() webhooks := []*model.Webhook{} for { - var webhook models.Webhook + var webhook *models.Webhook if _, err := cursor.ReadDocument(ctx, &webhook); driver.IsNoMoreDocuments(err) { // We're done break diff --git a/server/db/providers/arangodb/webhook_log.go b/server/db/providers/arangodb/webhook_log.go index 42de751..dba46ae 100644 --- a/server/db/providers/arangodb/webhook_log.go +++ b/server/db/providers/arangodb/webhook_log.go @@ -12,7 +12,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() webhookLog.Key = webhookLog.ID @@ -30,7 +30,7 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { webhookLogs := []*model.WebhookLog{} bindVariables := map[string]interface{}{} @@ -54,7 +54,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat paginationClone.Total = cursor.Statistics().FullCount() for { - var webhookLog models.WebhookLog + var webhookLog *models.WebhookLog meta, err := cursor.ReadDocument(ctx, &webhookLog) if arangoDriver.IsNoMoreDocuments(err) { @@ -69,7 +69,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat } return &model.WebhookLogs{ - Pagination: &paginationClone, + Pagination: paginationClone, WebhookLogs: webhookLogs, }, nil } diff --git a/server/db/providers/cassandradb/email_template.go b/server/db/providers/cassandradb/email_template.go index 7cb64cb..06b7708 100644 --- a/server/db/providers/cassandradb/email_template.go +++ b/server/db/providers/cassandradb/email_template.go @@ -15,7 +15,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() } @@ -39,7 +39,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { emailTemplate.UpdatedAt = time.Now().Unix() bytes, err := json.Marshal(emailTemplate) @@ -90,12 +90,12 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { emailTemplates := []*model.EmailTemplate{} paginationClone := pagination totalCountQuery := fmt.Sprintf(`SELECT COUNT(*) FROM %s`, KeySpace+"."+models.Collections.EmailTemplate) - err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(&paginationClone.Total) + err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(paginationClone.Total) if err != nil { return nil, err } @@ -109,7 +109,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin counter := int64(0) for scanner.Next() { if counter >= pagination.Offset { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate err := scanner.Scan(&emailTemplate.ID, &emailTemplate.EventName, &emailTemplate.Subject, &emailTemplate.Design, &emailTemplate.Template, &emailTemplate.CreatedAt, &emailTemplate.UpdatedAt) if err != nil { return nil, err @@ -120,14 +120,14 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: emailTemplates, }, nil } // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate query := fmt.Sprintf(`SELECT id, event_name, subject, design, template, created_at, updated_at FROM %s WHERE id = '%s' LIMIT 1`, KeySpace+"."+models.Collections.EmailTemplate, emailTemplateID) err := p.db.Query(query).Consistency(gocql.One).Scan(&emailTemplate.ID, &emailTemplate.EventName, &emailTemplate.Subject, &emailTemplate.Design, &emailTemplate.Template, &emailTemplate.CreatedAt, &emailTemplate.UpdatedAt) if err != nil { @@ -138,7 +138,7 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate query := fmt.Sprintf(`SELECT id, event_name, subject, design, template, created_at, updated_at FROM %s WHERE event_name = '%s' LIMIT 1 ALLOW FILTERING`, KeySpace+"."+models.Collections.EmailTemplate, eventName) err := p.db.Query(query).Consistency(gocql.One).Scan(&emailTemplate.ID, &emailTemplate.EventName, &emailTemplate.Subject, &emailTemplate.Design, &emailTemplate.Template, &emailTemplate.CreatedAt, &emailTemplate.UpdatedAt) if err != nil { diff --git a/server/db/providers/cassandradb/env.go b/server/db/providers/cassandradb/env.go index 384b539..16c4050 100644 --- a/server/db/providers/cassandradb/env.go +++ b/server/db/providers/cassandradb/env.go @@ -11,7 +11,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() } @@ -28,7 +28,7 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() updateEnvQuery := fmt.Sprintf("UPDATE %s SET env = '%s', updated_at = %d WHERE id = '%s'", KeySpace+"."+models.Collections.Env, env.EnvData, env.UpdatedAt, env.ID) @@ -40,8 +40,8 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env query := fmt.Sprintf("SELECT id, env, hash, created_at, updated_at FROM %s LIMIT 1", KeySpace+"."+models.Collections.Env) err := p.db.Query(query).Consistency(gocql.One).Scan(&env.ID, &env.EnvData, &env.Hash, &env.CreatedAt, &env.UpdatedAt) diff --git a/server/db/providers/cassandradb/session.go b/server/db/providers/cassandradb/session.go index e6042ea..c8d9232 100644 --- a/server/db/providers/cassandradb/session.go +++ b/server/db/providers/cassandradb/session.go @@ -10,7 +10,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() } diff --git a/server/db/providers/cassandradb/user.go b/server/db/providers/cassandradb/user.go index f8be709..e290049 100644 --- a/server/db/providers/cassandradb/user.go +++ b/server/db/providers/cassandradb/user.go @@ -18,7 +18,7 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() } @@ -87,7 +87,7 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() bytes, err := json.Marshal(user) @@ -138,13 +138,12 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { query := fmt.Sprintf("DELETE FROM %s WHERE id = '%s'", KeySpace+"."+models.Collections.User, user.ID) err := p.db.Query(query).Exec() if err != nil { return err } - getSessionsQuery := fmt.Sprintf("SELECT id FROM %s WHERE user_id = '%s' ALLOW FILTERING", KeySpace+"."+models.Collections.Session, user.ID) scanner := p.db.Query(getSessionsQuery).Iter().Scanner() sessionIDs := "" @@ -167,11 +166,11 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { responseUsers := []*model.User{} paginationClone := pagination totalCountQuery := fmt.Sprintf(`SELECT COUNT(*) FROM %s`, KeySpace+"."+models.Collections.User) - err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(&paginationClone.Total) + err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(paginationClone.Total) if err != nil { return nil, err } @@ -180,13 +179,12 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( // so we fetch till limit + offset // and return the results from offset to limit query := fmt.Sprintf("SELECT id, email, email_verified_at, password, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s LIMIT %d", KeySpace+"."+models.Collections.User, pagination.Limit+pagination.Offset) - scanner := p.db.Query(query).Iter().Scanner() counter := int64(0) for scanner.Next() { if counter >= pagination.Offset { - var user models.User - err := scanner.Scan(&user.ID, &user.Email, &user.EmailVerifiedAt, &user.Password, &user.SignupMethods, &user.GivenName, &user.FamilyName, &user.MiddleName, &user.Nickname, &user.Birthdate, &user.PhoneNumber, &user.PhoneNumberVerifiedAt, &user.Picture, &user.Roles, &user.RevokedTimestamp, &user.IsMultiFactorAuthEnabled, &user.CreatedAt, &user.UpdatedAt) + var user *models.User + err := scanner.Scan(user.ID, user.Email, user.EmailVerifiedAt, user.Password, user.SignupMethods, user.GivenName, user.FamilyName, user.MiddleName, user.Nickname, user.Birthdate, user.PhoneNumber, user.PhoneNumberVerifiedAt, user.Picture, user.Roles, user.RevokedTimestamp, user.IsMultiFactorAuthEnabled, user.CreatedAt, user.UpdatedAt) if err != nil { return nil, err } @@ -195,14 +193,14 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( counter++ } return &model.Users{ + Pagination: paginationClone, Users: responseUsers, - Pagination: &paginationClone, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var user models.User +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("SELECT id, email, email_verified_at, password, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s WHERE email = '%s' LIMIT 1 ALLOW FILTERING", KeySpace+"."+models.Collections.User, email) err := p.db.Query(query).Consistency(gocql.One).Scan(&user.ID, &user.Email, &user.EmailVerifiedAt, &user.Password, &user.SignupMethods, &user.GivenName, &user.FamilyName, &user.MiddleName, &user.Nickname, &user.Birthdate, &user.PhoneNumber, &user.PhoneNumberVerifiedAt, &user.Picture, &user.Roles, &user.RevokedTimestamp, &user.IsMultiFactorAuthEnabled, &user.CreatedAt, &user.UpdatedAt) if err != nil { @@ -212,8 +210,8 @@ func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.Use } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - var user models.User +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("SELECT id, email, email_verified_at, password, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s WHERE id = '%s' LIMIT 1", KeySpace+"."+models.Collections.User, id) err := p.db.Query(query).Consistency(gocql.One).Scan(&user.ID, &user.Email, &user.EmailVerifiedAt, &user.Password, &user.SignupMethods, &user.GivenName, &user.FamilyName, &user.MiddleName, &user.Nickname, &user.Birthdate, &user.PhoneNumber, &user.PhoneNumberVerifiedAt, &user.Picture, &user.Roles, &user.RevokedTimestamp, &user.IsMultiFactorAuthEnabled, &user.CreatedAt, &user.UpdatedAt) if err != nil { @@ -252,9 +250,8 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, } updateFields = strings.Trim(updateFields, " ") updateFields = strings.TrimSuffix(updateFields, ",") - query := "" - if ids != nil && len(ids) > 0 { + if len(ids) > 0 { idsString := "" for _, id := range ids { idsString += fmt.Sprintf("'%s', ", id) @@ -309,11 +306,11 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, // GetUserByPhoneNumber to get user information from database using phone number func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { - var user models.User + var user *models.User query := fmt.Sprintf("SELECT id, email, email_verified_at, password, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s WHERE phone_number = '%s' LIMIT 1 ALLOW FILTERING", KeySpace+"."+models.Collections.User, phoneNumber) - err := p.db.Query(query).Consistency(gocql.One).Scan(&user.ID, &user.Email, &user.EmailVerifiedAt, &user.Password, &user.SignupMethods, &user.GivenName, &user.FamilyName, &user.MiddleName, &user.Nickname, &user.Birthdate, &user.PhoneNumber, &user.PhoneNumberVerifiedAt, &user.Picture, &user.Roles, &user.RevokedTimestamp, &user.IsMultiFactorAuthEnabled, &user.CreatedAt, &user.UpdatedAt) + err := p.db.Query(query).Consistency(gocql.One).Scan(user.ID, user.Email, user.EmailVerifiedAt, user.Password, user.SignupMethods, user.GivenName, user.FamilyName, user.MiddleName, user.Nickname, user.Birthdate, user.PhoneNumber, user.PhoneNumberVerifiedAt, user.Picture, user.Roles, user.RevokedTimestamp, user.IsMultiFactorAuthEnabled, user.CreatedAt, user.UpdatedAt) if err != nil { return nil, err } - return &user, nil + return user, nil } diff --git a/server/db/providers/cassandradb/verification_requests.go b/server/db/providers/cassandradb/verification_requests.go index 3786a2b..f35196a 100644 --- a/server/db/providers/cassandradb/verification_requests.go +++ b/server/db/providers/cassandradb/verification_requests.go @@ -12,7 +12,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() } @@ -29,8 +29,8 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest query := fmt.Sprintf(`SELECT id, jwt_token, identifier, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM %s WHERE jwt_token = '%s' LIMIT 1`, KeySpace+"."+models.Collections.VerificationRequest, token) err := p.db.Query(query).Consistency(gocql.One).Scan(&verificationRequest.ID, &verificationRequest.Token, &verificationRequest.Identifier, &verificationRequest.ExpiresAt, &verificationRequest.Email, &verificationRequest.Nonce, &verificationRequest.RedirectURI, &verificationRequest.CreatedAt, &verificationRequest.UpdatedAt) @@ -41,8 +41,8 @@ func (p *provider) GetVerificationRequestByToken(ctx context.Context, token stri } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest query := fmt.Sprintf(`SELECT id, jwt_token, identifier, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM %s WHERE email = '%s' AND identifier = '%s' LIMIT 1 ALLOW FILTERING`, KeySpace+"."+models.Collections.VerificationRequest, email, identifier) err := p.db.Query(query).Consistency(gocql.One).Scan(&verificationRequest.ID, &verificationRequest.Token, &verificationRequest.Identifier, &verificationRequest.ExpiresAt, &verificationRequest.Email, &verificationRequest.Nonce, &verificationRequest.RedirectURI, &verificationRequest.CreatedAt, &verificationRequest.UpdatedAt) @@ -54,12 +54,11 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { var verificationRequests []*model.VerificationRequest - paginationClone := pagination totalCountQuery := fmt.Sprintf(`SELECT COUNT(*) FROM %s`, KeySpace+"."+models.Collections.VerificationRequest) - err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(&paginationClone.Total) + err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(paginationClone.Total) if err != nil { return nil, err } @@ -73,7 +72,7 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode counter := int64(0) for scanner.Next() { if counter >= pagination.Offset { - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest err := scanner.Scan(&verificationRequest.ID, &verificationRequest.Token, &verificationRequest.Identifier, &verificationRequest.ExpiresAt, &verificationRequest.Email, &verificationRequest.Nonce, &verificationRequest.RedirectURI, &verificationRequest.CreatedAt, &verificationRequest.UpdatedAt) if err != nil { return nil, err @@ -85,12 +84,12 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode return &model.VerificationRequests{ VerificationRequests: verificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { query := fmt.Sprintf("DELETE FROM %s WHERE id = '%s'", KeySpace+"."+models.Collections.VerificationRequest, verificationRequest.ID) err := p.db.Query(query).Exec() if err != nil { diff --git a/server/db/providers/cassandradb/webhook.go b/server/db/providers/cassandradb/webhook.go index cb50f08..b9b8abf 100644 --- a/server/db/providers/cassandradb/webhook.go +++ b/server/db/providers/cassandradb/webhook.go @@ -15,7 +15,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() } @@ -33,7 +33,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -81,11 +81,11 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { webhooks := []*model.Webhook{} paginationClone := pagination totalCountQuery := fmt.Sprintf(`SELECT COUNT(*) FROM %s`, KeySpace+"."+models.Collections.Webhook) - err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(&paginationClone.Total) + err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(paginationClone.Total) if err != nil { return nil, err } @@ -97,7 +97,7 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) counter := int64(0) for scanner.Next() { if counter >= pagination.Offset { - var webhook models.Webhook + var webhook *models.Webhook err := scanner.Scan(&webhook.ID, &webhook.EventDescription, &webhook.EventName, &webhook.EndPoint, &webhook.Headers, &webhook.Enabled, &webhook.CreatedAt, &webhook.UpdatedAt) if err != nil { return nil, err @@ -108,14 +108,14 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) } return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: webhooks, }, nil } // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { - var webhook models.Webhook + var webhook *models.Webhook query := fmt.Sprintf(`SELECT id, event_description, event_name, endpoint, headers, enabled, created_at, updated_at FROM %s WHERE id = '%s' LIMIT 1`, KeySpace+"."+models.Collections.Webhook, webhookID) err := p.db.Query(query).Consistency(gocql.One).Scan(&webhook.ID, &webhook.EventDescription, &webhook.EventName, &webhook.EndPoint, &webhook.Headers, &webhook.Enabled, &webhook.CreatedAt, &webhook.UpdatedAt) if err != nil { @@ -130,7 +130,7 @@ func (p *provider) GetWebhookByEventName(ctx context.Context, eventName string) scanner := p.db.Query(query).Iter().Scanner() webhooks := []*model.Webhook{} for scanner.Next() { - var webhook models.Webhook + var webhook *models.Webhook err := scanner.Scan(&webhook.ID, &webhook.EventDescription, &webhook.EventName, &webhook.EndPoint, &webhook.Headers, &webhook.Enabled, &webhook.CreatedAt, &webhook.UpdatedAt) if err != nil { return nil, err diff --git a/server/db/providers/cassandradb/webhook_log.go b/server/db/providers/cassandradb/webhook_log.go index 9ecf939..3eded48 100644 --- a/server/db/providers/cassandradb/webhook_log.go +++ b/server/db/providers/cassandradb/webhook_log.go @@ -12,7 +12,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() } @@ -30,7 +30,7 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { webhookLogs := []*model.WebhookLog{} paginationClone := pagination totalCountQuery := fmt.Sprintf(`SELECT COUNT(*) FROM %s`, KeySpace+"."+models.Collections.WebhookLog) @@ -44,7 +44,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat query = fmt.Sprintf("SELECT id, http_status, response, request, webhook_id, created_at, updated_at FROM %s WHERE webhook_id = '%s' LIMIT %d ALLOW FILTERING", KeySpace+"."+models.Collections.WebhookLog, webhookID, pagination.Limit+pagination.Offset) } - err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(&paginationClone.Total) + err := p.db.Query(totalCountQuery).Consistency(gocql.One).Scan(paginationClone.Total) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat counter := int64(0) for scanner.Next() { if counter >= pagination.Offset { - var webhookLog models.WebhookLog + var webhookLog *models.WebhookLog err := scanner.Scan(&webhookLog.ID, &webhookLog.HttpStatus, &webhookLog.Response, &webhookLog.Request, &webhookLog.WebhookID, &webhookLog.CreatedAt, &webhookLog.UpdatedAt) if err != nil { return nil, err @@ -64,7 +64,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat } return &model.WebhookLogs{ - Pagination: &paginationClone, + Pagination: paginationClone, WebhookLogs: webhookLogs, }, nil } diff --git a/server/db/providers/couchbase/email_template.go b/server/db/providers/couchbase/email_template.go index bd37482..9b58999 100644 --- a/server/db/providers/couchbase/email_template.go +++ b/server/db/providers/couchbase/email_template.go @@ -15,7 +15,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() @@ -37,7 +37,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { bytes, err := json.Marshal(emailTemplate) if err != nil { return nil, err @@ -67,7 +67,7 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { emailTemplates := []*model.EmailTemplate{} paginationClone := pagination total, err := p.GetTotalDocs(ctx, models.Collections.EmailTemplate) @@ -88,7 +88,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } for queryResult.Next() { - emailTemplate := models.EmailTemplate{} + var emailTemplate *models.EmailTemplate err := queryResult.Row(&emailTemplate) if err != nil { log.Fatal(err) @@ -102,15 +102,14 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: emailTemplates, }, nil } // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { - emailTemplate := models.EmailTemplate{} - + var emailTemplate *models.EmailTemplate query := fmt.Sprintf(`SELECT _id, event_name, subject, design, template, created_at, updated_at FROM %s.%s WHERE _id = $1 LIMIT 1`, p.scopeName, models.Collections.EmailTemplate) q, err := p.db.Query(query, &gocb.QueryOptions{ Context: ctx, @@ -132,8 +131,7 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - emailTemplate := models.EmailTemplate{} - + var emailTemplate *models.EmailTemplate query := fmt.Sprintf("SELECT _id, event_name, subject, design, template, created_at, updated_at FROM %s.%s WHERE event_name=$1 LIMIT 1", p.scopeName, models.Collections.EmailTemplate) q, err := p.db.Query(query, &gocb.QueryOptions{ Context: ctx, diff --git a/server/db/providers/couchbase/env.go b/server/db/providers/couchbase/env.go index 3addb9f..77d9aeb 100644 --- a/server/db/providers/couchbase/env.go +++ b/server/db/providers/couchbase/env.go @@ -11,7 +11,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() } @@ -31,7 +31,7 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() env.EncryptionKey = env.Hash @@ -49,8 +49,8 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env query := fmt.Sprintf("SELECT _id, env, encryption_key, created_at, updated_at FROM %s.%s LIMIT 1", p.scopeName, models.Collections.Env) q, err := p.db.Query(query, &gocb.QueryOptions{ diff --git a/server/db/providers/couchbase/session.go b/server/db/providers/couchbase/session.go index 6f0d84f..7907bdb 100644 --- a/server/db/providers/couchbase/session.go +++ b/server/db/providers/couchbase/session.go @@ -10,7 +10,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() } diff --git a/server/db/providers/couchbase/user.go b/server/db/providers/couchbase/user.go index 2dc813c..5850f36 100644 --- a/server/db/providers/couchbase/user.go +++ b/server/db/providers/couchbase/user.go @@ -15,7 +15,7 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() } @@ -41,7 +41,7 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() unsertOpt := gocb.UpsertOptions{ Context: ctx, @@ -54,7 +54,7 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { removeOpt := gocb.RemoveOptions{ Context: ctx, } @@ -66,12 +66,10 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { users := []*model.User{} paginationClone := pagination - userQuery := fmt.Sprintf("SELECT _id, email, email_verified_at, `password`, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s.%s ORDER BY id OFFSET $1 LIMIT $2", p.scopeName, models.Collections.User) - queryResult, err := p.db.Query(userQuery, &gocb.QueryOptions{ ScanConsistency: gocb.QueryScanConsistencyRequestPlus, Context: ctx, @@ -86,7 +84,7 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( } paginationClone.Total = total for queryResult.Next() { - var user models.User + var user *models.User err := queryResult.Row(&user) if err != nil { log.Fatal(err) @@ -97,21 +95,20 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( return nil, err } return &model.Users{ - Pagination: &paginationClone, + Pagination: paginationClone, Users: users, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - user := models.User{} +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("SELECT _id, email, email_verified_at, `password`, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s.%s WHERE email = $1 LIMIT 1", p.scopeName, models.Collections.User) q, err := p.db.Query(query, &gocb.QueryOptions{ ScanConsistency: gocb.QueryScanConsistencyRequestPlus, Context: ctx, PositionalParameters: []interface{}{email}, }) - if err != nil { return user, err } @@ -119,13 +116,12 @@ func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.Use if err != nil { return user, err } - return user, nil } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - user := models.User{} +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User query := fmt.Sprintf("SELECT _id, email, email_verified_at, `password`, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s.%s WHERE _id = $1 LIMIT 1", p.scopeName, models.Collections.User) q, err := p.db.Query(query, &gocb.QueryOptions{ ScanConsistency: gocb.QueryScanConsistencyRequestPlus, @@ -139,7 +135,6 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err if err != nil { return user, err } - return user, nil } @@ -174,7 +169,6 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, return err } } - return nil } @@ -194,6 +188,5 @@ func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) if err != nil { return user, err } - return user, nil } diff --git a/server/db/providers/couchbase/verification_requests.go b/server/db/providers/couchbase/verification_requests.go index 6971065..f1d2b00 100644 --- a/server/db/providers/couchbase/verification_requests.go +++ b/server/db/providers/couchbase/verification_requests.go @@ -13,7 +13,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() } @@ -33,8 +33,8 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - verificationRequest := models.VerificationRequest{} +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest params := make(map[string]interface{}, 1) params["token"] = token query := fmt.Sprintf("SELECT _id, token, identifier, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM %s.%s WHERE token=$1 LIMIT 1", p.scopeName, models.Collections.VerificationRequest) @@ -57,7 +57,7 @@ func (p *provider) GetVerificationRequestByToken(ctx context.Context, token stri } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { query := fmt.Sprintf("SELECT _id, identifier, token, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM %s.%s WHERE email=$1 AND identifier=$2 LIMIT 1", p.scopeName, models.Collections.VerificationRequest) queryResult, err := p.db.Query(query, &gocb.QueryOptions{ @@ -65,14 +65,11 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri PositionalParameters: []interface{}{email, identifier}, ScanConsistency: gocb.QueryScanConsistencyRequestPlus, }) - verificationRequest := models.VerificationRequest{} - if err != nil { - return verificationRequest, err + return nil, err } - + var verificationRequest *models.VerificationRequest err = queryResult.One(&verificationRequest) - if err != nil { return verificationRequest, err } @@ -80,7 +77,7 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { var verificationRequests []*model.VerificationRequest paginationClone := pagination total, err := p.GetTotalDocs(ctx, models.Collections.VerificationRequest) @@ -98,7 +95,7 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode return nil, err } for queryResult.Next() { - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest err := queryResult.Row(&verificationRequest) if err != nil { log.Fatal(err) @@ -111,12 +108,12 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode } return &model.VerificationRequests{ VerificationRequests: verificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { removeOpt := gocb.RemoveOptions{ Context: ctx, } diff --git a/server/db/providers/couchbase/webhook.go b/server/db/providers/couchbase/webhook.go index 2f51acd..9647419 100644 --- a/server/db/providers/couchbase/webhook.go +++ b/server/db/providers/couchbase/webhook.go @@ -15,7 +15,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() } @@ -35,7 +35,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -68,7 +68,7 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { webhooks := []*model.Webhook{} paginationClone := pagination params := make(map[string]interface{}, 1) @@ -89,7 +89,7 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) return nil, err } for queryResult.Next() { - var webhook models.Webhook + var webhook *models.Webhook err := queryResult.Row(&webhook) if err != nil { log.Fatal(err) @@ -100,14 +100,14 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) return nil, err } return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: webhooks, }, nil } // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { - var webhook models.Webhook + var webhook *models.Webhook params := make(map[string]interface{}, 1) params["_id"] = webhookID query := fmt.Sprintf(`SELECT _id, event_description, event_name, endpoint, headers, enabled, created_at, updated_at FROM %s.%s WHERE _id=$_id LIMIT 1`, p.scopeName, models.Collections.Webhook) @@ -141,7 +141,7 @@ func (p *provider) GetWebhookByEventName(ctx context.Context, eventName string) } webhooks := []*model.Webhook{} for queryResult.Next() { - var webhook models.Webhook + var webhook *models.Webhook err := queryResult.Row(&webhook) if err != nil { log.Fatal(err) diff --git a/server/db/providers/couchbase/webhook_log.go b/server/db/providers/couchbase/webhook_log.go index 7c4fd15..73d45dd 100644 --- a/server/db/providers/couchbase/webhook_log.go +++ b/server/db/providers/couchbase/webhook_log.go @@ -13,7 +13,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() } @@ -34,7 +34,7 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { var query string var err error @@ -66,7 +66,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat return nil, err } for queryResult.Next() { - var webhookLog models.WebhookLog + var webhookLog *models.WebhookLog err := queryResult.Row(&webhookLog) if err != nil { log.Fatal(err) @@ -79,7 +79,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat } return &model.WebhookLogs{ - Pagination: &paginationClone, + Pagination: paginationClone, WebhookLogs: webhookLogs, }, nil } diff --git a/server/db/providers/dynamodb/email_template.go b/server/db/providers/dynamodb/email_template.go index 08745cf..091c841 100644 --- a/server/db/providers/dynamodb/email_template.go +++ b/server/db/providers/dynamodb/email_template.go @@ -12,7 +12,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { collection := p.db.Table(models.Collections.EmailTemplate) if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() @@ -31,7 +31,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { collection := p.db.Table(models.Collections.EmailTemplate) emailTemplate.UpdatedAt = time.Now().Unix() err := UpdateByHashKey(collection, "id", emailTemplate.ID, emailTemplate) @@ -42,9 +42,9 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate var iter dynamo.PagingIter var lastEval dynamo.PagingKey var iteration int64 = 0 @@ -73,7 +73,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin paginationClone.Total = count return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: emailTemplates, }, nil } @@ -81,7 +81,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { collection := p.db.Table(models.Collections.EmailTemplate) - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate err := collection.Get("id", emailTemplateID).OneWithContext(ctx, &emailTemplate) if err != nil { return nil, err @@ -92,9 +92,8 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { collection := p.db.Table(models.Collections.EmailTemplate) - var emailTemplates []models.EmailTemplate - var emailTemplate models.EmailTemplate - + var emailTemplates []*models.EmailTemplate + var emailTemplate *models.EmailTemplate err := collection.Scan().Index("event_name").Filter("'event_name' = ?", eventName).Limit(1).AllWithContext(ctx, &emailTemplates) if err != nil { return nil, err diff --git a/server/db/providers/dynamodb/env.go b/server/db/providers/dynamodb/env.go index d491e19..daa2e3e 100644 --- a/server/db/providers/dynamodb/env.go +++ b/server/db/providers/dynamodb/env.go @@ -11,7 +11,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { collection := p.db.Table(models.Collections.Env) if env.ID == "" { @@ -33,7 +33,7 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { collection := p.db.Table(models.Collections.Env) env.UpdatedAt = time.Now().Unix() @@ -46,8 +46,8 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env collection := p.db.Table(models.Collections.Env) // As there is no Findone supported. diff --git a/server/db/providers/dynamodb/session.go b/server/db/providers/dynamodb/session.go index 68457e5..03218b3 100644 --- a/server/db/providers/dynamodb/session.go +++ b/server/db/providers/dynamodb/session.go @@ -9,7 +9,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { collection := p.db.Table(models.Collections.Session) if session.ID == "" { diff --git a/server/db/providers/dynamodb/user.go b/server/db/providers/dynamodb/user.go index d7c47e3..f93956b 100644 --- a/server/db/providers/dynamodb/user.go +++ b/server/db/providers/dynamodb/user.go @@ -18,13 +18,11 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { collection := p.db.Table(models.Collections.User) - if user.ID == "" { user.ID = uuid.New().String() } - if user.Roles == "" { defaultRoles, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyDefaultRoles) if err != nil { @@ -32,18 +30,14 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } user.Roles = defaultRoles } - if user.PhoneNumber != nil && strings.TrimSpace(refs.StringValue(user.PhoneNumber)) != "" { if u, _ := p.GetUserByPhoneNumber(ctx, refs.StringValue(user.PhoneNumber)); u != nil { return user, fmt.Errorf("user with given phone number already exists") } } - user.CreatedAt = time.Now().Unix() user.UpdatedAt = time.Now().Unix() - err := collection.Put(user).RunWithContext(ctx) - if err != nil { return user, err } @@ -51,18 +45,14 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { collection := p.db.Table(models.Collections.User) - if user.ID != "" { - user.UpdatedAt = time.Now().Unix() - err := UpdateByHashKey(collection, "id", user.ID, user) if err != nil { return user, err } - if err != nil { return user, err } @@ -72,18 +62,15 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { collection := p.db.Table(models.Collections.User) sessionCollection := p.db.Table(models.Collections.Session) - if user.ID != "" { err := collection.Delete("id", user.ID).Run() if err != nil { return err } - _, err = sessionCollection.Batch("id").Write().Delete(dynamo.Keys{"user_id", user.ID}).RunWithContext(ctx) - if err != nil { return err } @@ -92,23 +79,19 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { - var user models.User +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { + var user *models.User var lastEval dynamo.PagingKey var iter dynamo.PagingIter var iteration int64 = 0 - collection := p.db.Table(models.Collections.User) users := []*model.User{} - paginationClone := pagination scanner := collection.Scan() count, err := scanner.Count() - if err != nil { return nil, err } - for (paginationClone.Offset + paginationClone.Limit) > iteration { iter = scanner.StartFrom(lastEval).Limit(paginationClone.Limit).Iter() for iter.NextWithContext(ctx, &user) { @@ -119,48 +102,39 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( lastEval = iter.LastEvaluatedKey() iteration += paginationClone.Limit } - err = iter.Err() - if err != nil { return nil, err } - paginationClone.Total = count - return &model.Users{ - Pagination: &paginationClone, + Pagination: paginationClone, Users: users, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var users []models.User - var user models.User - +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var users []*models.User + var user *models.User collection := p.db.Table(models.Collections.User) err := collection.Scan().Index("email").Filter("'email' = ?", email).AllWithContext(ctx, &users) - if err != nil { return user, nil } - if len(users) > 0 { user = users[0] return user, nil } else { return user, errors.New("no record found") } - } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { collection := p.db.Table(models.Collections.User) - var user models.User + var user *models.User err := collection.Get("id", id).OneWithContext(ctx, &user) - if err != nil { if user.Email == "" { return user, errors.New("no documets found") @@ -186,7 +160,6 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, } else { // as there is no facility to update all doc - https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.UpdateData.html userCollection.Scan().All(&allUsers) - for _, user := range allUsers { err = UpdateByHashKey(userCollection, "id", user.ID, data) if err == nil { @@ -194,7 +167,6 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, } } } - if err != nil { return err } else { @@ -205,19 +177,16 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, // GetUserByPhoneNumber to get user information from database using phone number func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { - var users []models.User - var user models.User - + var users []*models.User + var user *models.User collection := p.db.Table(models.Collections.User) err := collection.Scan().Filter("'phone_number' = ?", phoneNumber).AllWithContext(ctx, &users) - if err != nil { return nil, err } - if len(users) > 0 { user = users[0] - return &user, nil + return user, nil } else { return nil, errors.New("no record found") } diff --git a/server/db/providers/dynamodb/verification_requests.go b/server/db/providers/dynamodb/verification_requests.go index 990c288..e261c2f 100644 --- a/server/db/providers/dynamodb/verification_requests.go +++ b/server/db/providers/dynamodb/verification_requests.go @@ -11,7 +11,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { collection := p.db.Table(models.Collections.VerificationRequest) if verificationRequest.ID == "" { @@ -28,9 +28,9 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { collection := p.db.Table(models.Collections.VerificationRequest) - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest iter := collection.Scan().Filter("'token' = ?", token).Iter() for iter.NextWithContext(ctx, &verificationRequest) { @@ -45,8 +45,8 @@ func (p *provider) GetVerificationRequestByToken(ctx context.Context, token stri } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest collection := p.db.Table(models.Collections.VerificationRequest) iter := collection.Scan().Filter("'email' = ?", email).Filter("'identifier' = ?", identifier).Iter() for iter.NextWithContext(ctx, &verificationRequest) { @@ -61,9 +61,9 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { verificationRequests := []*model.VerificationRequest{} - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest var lastEval dynamo.PagingKey var iter dynamo.PagingIter var iteration int64 = 0 @@ -97,12 +97,12 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode return &model.VerificationRequests{ VerificationRequests: verificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { collection := p.db.Table(models.Collections.VerificationRequest) if verificationRequest.ID != "" { diff --git a/server/db/providers/dynamodb/webhook.go b/server/db/providers/dynamodb/webhook.go index 8f1ffb7..920173b 100644 --- a/server/db/providers/dynamodb/webhook.go +++ b/server/db/providers/dynamodb/webhook.go @@ -15,7 +15,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { collection := p.db.Table(models.Collections.Webhook) if webhook.ID == "" { webhook.ID = uuid.New().String() @@ -33,7 +33,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -48,9 +48,9 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { webhooks := []*model.Webhook{} - var webhook models.Webhook + var webhook *models.Webhook var lastEval dynamo.PagingKey var iter dynamo.PagingIter var iteration int64 = 0 @@ -77,7 +77,7 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) } paginationClone.Total = count return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: webhooks, }, nil } @@ -85,7 +85,7 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { collection := p.db.Table(models.Collections.Webhook) - var webhook models.Webhook + var webhook *models.Webhook err := collection.Get("id", webhookID).OneWithContext(ctx, &webhook) if err != nil { return nil, err @@ -116,7 +116,7 @@ func (p *provider) DeleteWebhook(ctx context.Context, webhook *model.Webhook) er // Also delete webhook logs for given webhook id if webhook.ID != "" { webhookCollection := p.db.Table(models.Collections.Webhook) - pagination := model.Pagination{} + var pagination *model.Pagination webhookLogCollection := p.db.Table(models.Collections.WebhookLog) err := webhookCollection.Delete("id", webhook.ID).RunWithContext(ctx) if err != nil { diff --git a/server/db/providers/dynamodb/webhook_log.go b/server/db/providers/dynamodb/webhook_log.go index e9d1dcd..a1fc8ca 100644 --- a/server/db/providers/dynamodb/webhook_log.go +++ b/server/db/providers/dynamodb/webhook_log.go @@ -11,7 +11,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { collection := p.db.Table(models.Collections.WebhookLog) if webhookLog.ID == "" { @@ -30,9 +30,9 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { webhookLogs := []*model.WebhookLog{} - var webhookLog models.WebhookLog + var webhookLog *models.WebhookLog var lastEval dynamo.PagingKey var iter dynamo.PagingIter var iteration int64 = 0 @@ -72,7 +72,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat paginationClone.Total = count // paginationClone.Cursor = iter.LastEvaluatedKey() return &model.WebhookLogs{ - Pagination: &paginationClone, + Pagination: paginationClone, WebhookLogs: webhookLogs, }, nil } diff --git a/server/db/providers/mongodb/email_template.go b/server/db/providers/mongodb/email_template.go index 0a0d1d9..f412b4c 100644 --- a/server/db/providers/mongodb/email_template.go +++ b/server/db/providers/mongodb/email_template.go @@ -12,7 +12,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() } @@ -30,7 +30,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { emailTemplate.UpdatedAt = time.Now().Unix() emailTemplateCollection := p.db.Collection(models.Collections.EmailTemplate, options.Collection()) @@ -43,7 +43,7 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { var emailTemplates []*model.EmailTemplate opts := options.Find() opts.SetLimit(pagination.Limit) @@ -67,7 +67,7 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin defer cursor.Close(ctx) for cursor.Next(ctx) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate err := cursor.Decode(&emailTemplate) if err != nil { return nil, err @@ -76,14 +76,14 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin } return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: emailTemplates, }, nil } // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate emailTemplateCollection := p.db.Collection(models.Collections.EmailTemplate, options.Collection()) err := emailTemplateCollection.FindOne(ctx, bson.M{"_id": emailTemplateID}).Decode(&emailTemplate) if err != nil { @@ -94,7 +94,7 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate emailTemplateCollection := p.db.Collection(models.Collections.EmailTemplate, options.Collection()) err := emailTemplateCollection.FindOne(ctx, bson.M{"event_name": eventName}).Decode(&emailTemplate) if err != nil { diff --git a/server/db/providers/mongodb/env.go b/server/db/providers/mongodb/env.go index a4b114c..ec6afd9 100644 --- a/server/db/providers/mongodb/env.go +++ b/server/db/providers/mongodb/env.go @@ -12,7 +12,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() } @@ -29,7 +29,7 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() configCollection := p.db.Collection(models.Collections.Env, options.Collection()) _, err := configCollection.UpdateOne(ctx, bson.M{"_id": bson.M{"$eq": env.ID}}, bson.M{"$set": env}, options.MergeUpdateOptions()) @@ -40,8 +40,8 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env configCollection := p.db.Collection(models.Collections.Env, options.Collection()) cursor, err := configCollection.Find(ctx, bson.M{}, options.Find()) if err != nil { diff --git a/server/db/providers/mongodb/session.go b/server/db/providers/mongodb/session.go index 4030130..01b35bc 100644 --- a/server/db/providers/mongodb/session.go +++ b/server/db/providers/mongodb/session.go @@ -10,7 +10,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() } diff --git a/server/db/providers/mongodb/user.go b/server/db/providers/mongodb/user.go index 32b6a17..078322e 100644 --- a/server/db/providers/mongodb/user.go +++ b/server/db/providers/mongodb/user.go @@ -16,11 +16,10 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() } - if user.Roles == "" { defaultRoles, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyDefaultRoles) if err != nil { @@ -36,12 +35,11 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, if err != nil { return user, err } - return user, nil } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() userCollection := p.db.Collection(models.Collections.User, options.Collection()) _, err := userCollection.UpdateOne(ctx, bson.M{"_id": bson.M{"$eq": user.ID}}, bson.M{"$set": user}, options.MergeUpdateOptions()) @@ -52,83 +50,72 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { userCollection := p.db.Collection(models.Collections.User, options.Collection()) _, err := userCollection.DeleteOne(ctx, bson.M{"_id": user.ID}, options.Delete()) if err != nil { return err } - sessionCollection := p.db.Collection(models.Collections.Session, options.Collection()) _, err = sessionCollection.DeleteMany(ctx, bson.M{"user_id": user.ID}, options.Delete()) if err != nil { return err } - return nil } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { var users []*model.User opts := options.Find() opts.SetLimit(pagination.Limit) opts.SetSkip(pagination.Offset) opts.SetSort(bson.M{"created_at": -1}) - paginationClone := pagination - userCollection := p.db.Collection(models.Collections.User, options.Collection()) count, err := userCollection.CountDocuments(ctx, bson.M{}, options.Count()) if err != nil { return nil, err } - paginationClone.Total = count - cursor, err := userCollection.Find(ctx, bson.M{}, opts) if err != nil { return nil, err } defer cursor.Close(ctx) - for cursor.Next(ctx) { - var user models.User + var user *models.User err := cursor.Decode(&user) if err != nil { return nil, err } users = append(users, user.AsAPIUser()) } - return &model.Users{ - Pagination: &paginationClone, + Pagination: paginationClone, Users: users, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var user models.User +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User userCollection := p.db.Collection(models.Collections.User, options.Collection()) err := userCollection.FindOne(ctx, bson.M{"email": email}).Decode(&user) if err != nil { return user, err } - return user, nil } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User userCollection := p.db.Collection(models.Collections.User, options.Collection()) err := userCollection.FindOne(ctx, bson.M{"_id": id}).Decode(&user) if err != nil { return user, err } - return user, nil } @@ -137,17 +124,14 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, ids []string) error { // set updated_at time for all users data["updated_at"] = time.Now().Unix() - userCollection := p.db.Collection(models.Collections.User, options.Collection()) - var res *mongo.UpdateResult var err error - if ids != nil && len(ids) > 0 { + if len(ids) > 0 { res, err = userCollection.UpdateMany(ctx, bson.M{"_id": bson.M{"$in": ids}}, bson.M{"$set": data}) } else { res, err = userCollection.UpdateMany(ctx, bson.M{}, bson.M{"$set": data}) } - if err != nil { return err } else { @@ -158,13 +142,11 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, // GetUserByPhoneNumber to get user information from database using phone number func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { - var user models.User - + var user *models.User userCollection := p.db.Collection(models.Collections.User, options.Collection()) err := userCollection.FindOne(ctx, bson.M{"phone_number": phoneNumber}).Decode(&user) if err != nil { return nil, err } - - return &user, nil + return user, nil } diff --git a/server/db/providers/mongodb/verification_requests.go b/server/db/providers/mongodb/verification_requests.go index ff6f908..532d8c8 100644 --- a/server/db/providers/mongodb/verification_requests.go +++ b/server/db/providers/mongodb/verification_requests.go @@ -12,7 +12,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() @@ -30,8 +30,8 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest verificationRequestCollection := p.db.Collection(models.Collections.VerificationRequest, options.Collection()) err := verificationRequestCollection.FindOne(ctx, bson.M{"token": token}).Decode(&verificationRequest) @@ -43,8 +43,8 @@ func (p *provider) GetVerificationRequestByToken(ctx context.Context, token stri } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest verificationRequestCollection := p.db.Collection(models.Collections.VerificationRequest, options.Collection()) err := verificationRequestCollection.FindOne(ctx, bson.M{"email": email, "identifier": identifier}).Decode(&verificationRequest) @@ -56,7 +56,7 @@ func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email stri } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { var verificationRequests []*model.VerificationRequest opts := options.Find() @@ -77,7 +77,7 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode defer cursor.Close(ctx) for cursor.Next(ctx) { - var verificationRequest models.VerificationRequest + var verificationRequest *models.VerificationRequest err := cursor.Decode(&verificationRequest) if err != nil { return nil, err @@ -87,12 +87,12 @@ func (p *provider) ListVerificationRequests(ctx context.Context, pagination mode return &model.VerificationRequests{ VerificationRequests: verificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { verificationRequestCollection := p.db.Collection(models.Collections.VerificationRequest, options.Collection()) _, err := verificationRequestCollection.DeleteOne(ctx, bson.M{"_id": verificationRequest.ID}, options.Delete()) if err != nil { diff --git a/server/db/providers/mongodb/webhook.go b/server/db/providers/mongodb/webhook.go index 843aec9..ef6b382 100644 --- a/server/db/providers/mongodb/webhook.go +++ b/server/db/providers/mongodb/webhook.go @@ -14,7 +14,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() } @@ -32,7 +32,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -47,7 +47,7 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { webhooks := []*model.Webhook{} opts := options.Find() opts.SetLimit(pagination.Limit) @@ -66,7 +66,7 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) } defer cursor.Close(ctx) for cursor.Next(ctx) { - var webhook models.Webhook + var webhook *models.Webhook err := cursor.Decode(&webhook) if err != nil { return nil, err @@ -74,14 +74,14 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) webhooks = append(webhooks, webhook.AsAPIWebhook()) } return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: webhooks, }, nil } // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { - var webhook models.Webhook + var webhook *models.Webhook webhookCollection := p.db.Collection(models.Collections.Webhook, options.Collection()) err := webhookCollection.FindOne(ctx, bson.M{"_id": webhookID}).Decode(&webhook) if err != nil { @@ -104,7 +104,7 @@ func (p *provider) GetWebhookByEventName(ctx context.Context, eventName string) } defer cursor.Close(ctx) for cursor.Next(ctx) { - var webhook models.Webhook + var webhook *models.Webhook err := cursor.Decode(&webhook) if err != nil { return nil, err diff --git a/server/db/providers/mongodb/webhook_log.go b/server/db/providers/mongodb/webhook_log.go index 6e1081c..0c464d8 100644 --- a/server/db/providers/mongodb/webhook_log.go +++ b/server/db/providers/mongodb/webhook_log.go @@ -12,7 +12,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() } @@ -30,7 +30,7 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { webhookLogs := []*model.WebhookLog{} opts := options.Find() opts.SetLimit(pagination.Limit) @@ -59,7 +59,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat defer cursor.Close(ctx) for cursor.Next(ctx) { - var webhookLog models.WebhookLog + var webhookLog *models.WebhookLog err := cursor.Decode(&webhookLog) if err != nil { return nil, err @@ -68,7 +68,7 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat } return &model.WebhookLogs{ - Pagination: &paginationClone, + Pagination: paginationClone, WebhookLogs: webhookLogs, }, nil } diff --git a/server/db/providers/provider_template/email_template.go b/server/db/providers/provider_template/email_template.go index e6a1f50..a306479 100644 --- a/server/db/providers/provider_template/email_template.go +++ b/server/db/providers/provider_template/email_template.go @@ -10,7 +10,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() } @@ -22,13 +22,13 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { emailTemplate.UpdatedAt = time.Now().Unix() return emailTemplate.AsAPIEmailTemplate(), nil } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { return nil, nil } diff --git a/server/db/providers/provider_template/env.go b/server/db/providers/provider_template/env.go index af232e8..823d4e3 100644 --- a/server/db/providers/provider_template/env.go +++ b/server/db/providers/provider_template/env.go @@ -9,7 +9,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() } @@ -20,14 +20,14 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() return env, nil } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env return env, nil } diff --git a/server/db/providers/provider_template/session.go b/server/db/providers/provider_template/session.go index c6f45ec..fd1e853 100644 --- a/server/db/providers/provider_template/session.go +++ b/server/db/providers/provider_template/session.go @@ -9,7 +9,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() } diff --git a/server/db/providers/provider_template/user.go b/server/db/providers/provider_template/user.go index 286e74d..9f4c7f8 100644 --- a/server/db/providers/provider_template/user.go +++ b/server/db/providers/provider_template/user.go @@ -12,11 +12,10 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() } - if user.Roles == "" { defaultRoles, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyDefaultRoles) if err != nil { @@ -24,40 +23,36 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } user.Roles = defaultRoles } - user.CreatedAt = time.Now().Unix() user.UpdatedAt = time.Now().Unix() - return user, nil } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() return user, nil } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { return nil } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { return nil, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User return user, nil } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User return user, nil } @@ -66,13 +61,11 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, ids []string) error { // set updated_at time for all users data["updated_at"] = time.Now().Unix() - return nil } // GetUserByPhoneNumber to get user information from database using phone number func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { var user *models.User - return user, nil } diff --git a/server/db/providers/provider_template/verification_requests.go b/server/db/providers/provider_template/verification_requests.go index 577d2f6..c3a7f18 100644 --- a/server/db/providers/provider_template/verification_requests.go +++ b/server/db/providers/provider_template/verification_requests.go @@ -10,7 +10,7 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() } @@ -22,25 +22,25 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest return verificationRequest, nil } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest return verificationRequest, nil } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { return nil, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { return nil } diff --git a/server/db/providers/provider_template/webhook.go b/server/db/providers/provider_template/webhook.go index faf18fa..cf0edbe 100644 --- a/server/db/providers/provider_template/webhook.go +++ b/server/db/providers/provider_template/webhook.go @@ -12,7 +12,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() } @@ -25,7 +25,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -35,7 +35,7 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { return nil, nil } diff --git a/server/db/providers/provider_template/webhook_log.go b/server/db/providers/provider_template/webhook_log.go index 9814bc3..9ad81d2 100644 --- a/server/db/providers/provider_template/webhook_log.go +++ b/server/db/providers/provider_template/webhook_log.go @@ -10,7 +10,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() } @@ -22,6 +22,6 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { return nil, nil } diff --git a/server/db/providers/providers.go b/server/db/providers/providers.go index be25b53..1df7e37 100644 --- a/server/db/providers/providers.go +++ b/server/db/providers/providers.go @@ -9,50 +9,50 @@ import ( type Provider interface { // AddUser to save user information in database - AddUser(ctx context.Context, user models.User) (models.User, error) + AddUser(ctx context.Context, user *models.User) (*models.User, error) // UpdateUser to update user information in database - UpdateUser(ctx context.Context, user models.User) (models.User, error) + UpdateUser(ctx context.Context, user *models.User) (*models.User, error) // DeleteUser to delete user information from database - DeleteUser(ctx context.Context, user models.User) error + DeleteUser(ctx context.Context, user *models.User) error // ListUsers to get list of users from database - ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) + ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) // GetUserByEmail to get user information from database using email address - GetUserByEmail(ctx context.Context, email string) (models.User, error) + GetUserByEmail(ctx context.Context, email string) (*models.User, error) // GetUserByPhoneNumber to get user information from database using phone number GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) // GetUserByID to get user information from database using user ID - GetUserByID(ctx context.Context, id string) (models.User, error) + GetUserByID(ctx context.Context, id string) (*models.User, error) // UpdateUsers to update multiple users, with parameters of user IDs slice // If ids set to nil / empty all the users will be updated UpdateUsers(ctx context.Context, data map[string]interface{}, ids []string) error // AddVerification to save verification request in database - AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) + AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) // GetVerificationRequestByToken to get verification request from database using token - GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) + GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) // GetVerificationRequestByEmail to get verification request by email from database - GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) + GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) // ListVerificationRequests to get list of verification requests from database - ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) + ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) // DeleteVerificationRequest to delete verification request from database - DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error + DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error // AddSession to save session information in database - AddSession(ctx context.Context, session models.Session) error + AddSession(ctx context.Context, session *models.Session) error // AddEnv to save environment information in database - AddEnv(ctx context.Context, env models.Env) (models.Env, error) + AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) // UpdateEnv to update environment information in database - UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) + UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) // GetEnv to get environment information from database - GetEnv(ctx context.Context) (models.Env, error) + GetEnv(ctx context.Context) (*models.Env, error) // AddWebhook to add webhook - AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) + AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) // UpdateWebhook to update webhook - UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) + UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) // ListWebhooks to list webhook - ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) + ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) // GetWebhookByID to get webhook by id GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) // GetWebhookByEventName to get webhook by event_name @@ -61,16 +61,16 @@ type Provider interface { DeleteWebhook(ctx context.Context, webhook *model.Webhook) error // AddWebhookLog to add webhook log - AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) + AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) // ListWebhookLogs to list webhook logs - ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) + ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) // AddEmailTemplate to add EmailTemplate - AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) + AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) // UpdateEmailTemplate to update EmailTemplate - UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) + UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) // ListEmailTemplates to list EmailTemplate - ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) + ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) // GetEmailTemplateByID to get EmailTemplate by id GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) // GetEmailTemplateByEventName to get EmailTemplate by event_name diff --git a/server/db/providers/sql/email_template.go b/server/db/providers/sql/email_template.go index 1a8e0d2..8928b6f 100644 --- a/server/db/providers/sql/email_template.go +++ b/server/db/providers/sql/email_template.go @@ -10,7 +10,7 @@ import ( ) // AddEmailTemplate to add EmailTemplate -func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { if emailTemplate.ID == "" { emailTemplate.ID = uuid.New().String() } @@ -27,7 +27,7 @@ func (p *provider) AddEmailTemplate(ctx context.Context, emailTemplate models.Em } // UpdateEmailTemplate to update EmailTemplate -func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models.EmailTemplate) (*model.EmailTemplate, error) { +func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate *models.EmailTemplate) (*model.EmailTemplate, error) { emailTemplate.UpdatedAt = time.Now().Unix() res := p.db.Save(&emailTemplate) @@ -38,9 +38,8 @@ func (p *provider) UpdateEmailTemplate(ctx context.Context, emailTemplate models } // ListEmailTemplates to list EmailTemplate -func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagination) (*model.EmailTemplates, error) { - var emailTemplates []models.EmailTemplate - +func (p *provider) ListEmailTemplate(ctx context.Context, pagination *model.Pagination) (*model.EmailTemplates, error) { + var emailTemplates []*models.EmailTemplate result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&emailTemplates) if result.Error != nil { return nil, result.Error @@ -60,14 +59,14 @@ func (p *provider) ListEmailTemplate(ctx context.Context, pagination model.Pagin responseEmailTemplates = append(responseEmailTemplates, w.AsAPIEmailTemplate()) } return &model.EmailTemplates{ - Pagination: &paginationClone, + Pagination: paginationClone, EmailTemplates: responseEmailTemplates, }, nil } // GetEmailTemplateByID to get EmailTemplate by id func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate result := p.db.Where("id = ?", emailTemplateID).First(&emailTemplate) if result.Error != nil { @@ -78,7 +77,7 @@ func (p *provider) GetEmailTemplateByID(ctx context.Context, emailTemplateID str // GetEmailTemplateByEventName to get EmailTemplate by event_name func (p *provider) GetEmailTemplateByEventName(ctx context.Context, eventName string) (*model.EmailTemplate, error) { - var emailTemplate models.EmailTemplate + var emailTemplate *models.EmailTemplate result := p.db.Where("event_name = ?", eventName).First(&emailTemplate) if result.Error != nil { @@ -95,6 +94,5 @@ func (p *provider) DeleteEmailTemplate(ctx context.Context, emailTemplate *model if result.Error != nil { return result.Error } - return nil } diff --git a/server/db/providers/sql/env.go b/server/db/providers/sql/env.go index 1f34c38..11584a0 100644 --- a/server/db/providers/sql/env.go +++ b/server/db/providers/sql/env.go @@ -9,7 +9,7 @@ import ( ) // AddEnv to save environment information in database -func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) AddEnv(ctx context.Context, env *models.Env) (*models.Env, error) { if env.ID == "" { env.ID = uuid.New().String() } @@ -26,10 +26,9 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro } // UpdateEnv to update environment information in database -func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) { +func (p *provider) UpdateEnv(ctx context.Context, env *models.Env) (*models.Env, error) { env.UpdatedAt = time.Now().Unix() result := p.db.Save(&env) - if result.Error != nil { return env, result.Error } @@ -37,13 +36,11 @@ func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, e } // GetEnv to get environment information from database -func (p *provider) GetEnv(ctx context.Context) (models.Env, error) { - var env models.Env +func (p *provider) GetEnv(ctx context.Context) (*models.Env, error) { + var env *models.Env result := p.db.First(&env) - if result.Error != nil { return env, result.Error } - return env, nil } diff --git a/server/db/providers/sql/provider.go b/server/db/providers/sql/provider.go index 2101953..0512ecf 100644 --- a/server/db/providers/sql/provider.go +++ b/server/db/providers/sql/provider.go @@ -77,7 +77,7 @@ func NewProvider() (*provider, error) { logrus.Debug("Failed to drop phone number constraint:", err) } - err = sqlDB.AutoMigrate(&models.User{}, &models.VerificationRequest{}, &models.Session{}, &models.Env{}, &models.Webhook{}, models.WebhookLog{}, models.EmailTemplate{}, &models.OTP{}) + err = sqlDB.AutoMigrate(&models.User{}, &models.VerificationRequest{}, &models.Session{}, &models.Env{}, &models.Webhook{}, &models.WebhookLog{}, &models.EmailTemplate{}, &models.OTP{}) if err != nil { return nil, err } diff --git a/server/db/providers/sql/session.go b/server/db/providers/sql/session.go index 0ed7317..07b4849 100644 --- a/server/db/providers/sql/session.go +++ b/server/db/providers/sql/session.go @@ -10,7 +10,7 @@ import ( ) // AddSession to save session information in database -func (p *provider) AddSession(ctx context.Context, session models.Session) error { +func (p *provider) AddSession(ctx context.Context, session *models.Session) error { if session.ID == "" { session.ID = uuid.New().String() } diff --git a/server/db/providers/sql/user.go b/server/db/providers/sql/user.go index a4b40c0..5243ad6 100644 --- a/server/db/providers/sql/user.go +++ b/server/db/providers/sql/user.go @@ -17,7 +17,7 @@ import ( ) // AddUser to save user information in database -func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) AddUser(ctx context.Context, user *models.User) (*models.User, error) { if user.ID == "" { user.ID = uuid.New().String() } @@ -53,7 +53,7 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User, } // UpdateUser to update user information in database -func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) { +func (p *provider) UpdateUser(ctx context.Context, user *models.User) (*models.User, error) { user.UpdatedAt = time.Now().Unix() result := p.db.Save(&user) @@ -66,7 +66,7 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use } // DeleteUser to delete user information from database -func (p *provider) DeleteUser(ctx context.Context, user models.User) error { +func (p *provider) DeleteUser(ctx context.Context, user *models.User) error { result := p.db.Where("user_id = ?", user.ID).Delete(&models.Session{}) if result.Error != nil { return result.Error @@ -81,7 +81,7 @@ func (p *provider) DeleteUser(ctx context.Context, user models.User) error { } // ListUsers to get list of users from database -func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) (*model.Users, error) { +func (p *provider) ListUsers(ctx context.Context, pagination *model.Pagination) (*model.Users, error) { var users []models.User result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&users) if result.Error != nil { @@ -103,31 +103,28 @@ func (p *provider) ListUsers(ctx context.Context, pagination model.Pagination) ( paginationClone.Total = total return &model.Users{ - Pagination: &paginationClone, + Pagination: paginationClone, Users: responseUsers, }, nil } // GetUserByEmail to get user information from database using email address -func (p *provider) GetUserByEmail(ctx context.Context, email string) (models.User, error) { - var user models.User +func (p *provider) GetUserByEmail(ctx context.Context, email string) (*models.User, error) { + var user *models.User result := p.db.Where("email = ?", email).First(&user) if result.Error != nil { return user, result.Error } - return user, nil } // GetUserByID to get user information from database using user ID -func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, error) { - var user models.User - +func (p *provider) GetUserByID(ctx context.Context, id string) (*models.User, error) { + var user *models.User result := p.db.Where("id = ?", id).First(&user) if result.Error != nil { return user, result.Error } - return user, nil } @@ -136,14 +133,12 @@ func (p *provider) GetUserByID(ctx context.Context, id string) (models.User, err func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, ids []string) error { // set updated_at time for all users data["updated_at"] = time.Now().Unix() - var res *gorm.DB - if ids != nil && len(ids) > 0 { + if len(ids) > 0 { res = p.db.Model(&models.User{}).Where("id in ?", ids).Updates(data) } else { res = p.db.Model(&models.User{}).Updates(data) } - if res.Error != nil { return res.Error } @@ -154,10 +149,8 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { var user *models.User result := p.db.Where("phone_number = ?", phoneNumber).First(&user) - if result.Error != nil { return nil, result.Error } - return user, nil } diff --git a/server/db/providers/sql/verification_requests.go b/server/db/providers/sql/verification_requests.go index 5b413b0..ac91bec 100644 --- a/server/db/providers/sql/verification_requests.go +++ b/server/db/providers/sql/verification_requests.go @@ -11,11 +11,10 @@ import ( ) // AddVerification to save verification request in database -func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) (models.VerificationRequest, error) { +func (p *provider) AddVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) (*models.VerificationRequest, error) { if verificationRequest.ID == "" { verificationRequest.ID = uuid.New().String() } - verificationRequest.Key = verificationRequest.ID verificationRequest.CreatedAt = time.Now().Unix() verificationRequest.UpdatedAt = time.Now().Unix() @@ -23,75 +22,61 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque Columns: []clause.Column{{Name: "email"}, {Name: "identifier"}}, DoUpdates: clause.AssignmentColumns([]string{"token", "expires_at", "nonce", "redirect_uri"}), }).Create(&verificationRequest) - if result.Error != nil { return verificationRequest, result.Error } - return verificationRequest, nil } // GetVerificationRequestByToken to get verification request from database using token -func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest +func (p *provider) GetVerificationRequestByToken(ctx context.Context, token string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest result := p.db.Where("token = ?", token).First(&verificationRequest) - if result.Error != nil { return verificationRequest, result.Error } - return verificationRequest, nil } // GetVerificationRequestByEmail to get verification request by email from database -func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (models.VerificationRequest, error) { - var verificationRequest models.VerificationRequest - +func (p *provider) GetVerificationRequestByEmail(ctx context.Context, email string, identifier string) (*models.VerificationRequest, error) { + var verificationRequest *models.VerificationRequest result := p.db.Where("email = ? AND identifier = ?", email, identifier).First(&verificationRequest) - if result.Error != nil { return verificationRequest, result.Error } - return verificationRequest, nil } // ListVerificationRequests to get list of verification requests from database -func (p *provider) ListVerificationRequests(ctx context.Context, pagination model.Pagination) (*model.VerificationRequests, error) { +func (p *provider) ListVerificationRequests(ctx context.Context, pagination *model.Pagination) (*model.VerificationRequests, error) { var verificationRequests []models.VerificationRequest - result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&verificationRequests) if result.Error != nil { return nil, result.Error } - responseVerificationRequests := []*model.VerificationRequest{} for _, v := range verificationRequests { responseVerificationRequests = append(responseVerificationRequests, v.AsAPIVerificationRequest()) } - var total int64 totalRes := p.db.Model(&models.VerificationRequest{}).Count(&total) if totalRes.Error != nil { return nil, totalRes.Error } - paginationClone := pagination paginationClone.Total = total - return &model.VerificationRequests{ VerificationRequests: responseVerificationRequests, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } // DeleteVerificationRequest to delete verification request from database -func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { +func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest *models.VerificationRequest) error { result := p.db.Delete(&verificationRequest) - if result.Error != nil { return result.Error } - return nil } diff --git a/server/db/providers/sql/webhook.go b/server/db/providers/sql/webhook.go index 72f3cb4..54e2d13 100644 --- a/server/db/providers/sql/webhook.go +++ b/server/db/providers/sql/webhook.go @@ -12,7 +12,7 @@ import ( ) // AddWebhook to add webhook -func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) AddWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { if webhook.ID == "" { webhook.ID = uuid.New().String() } @@ -29,7 +29,7 @@ func (p *provider) AddWebhook(ctx context.Context, webhook models.Webhook) (*mod } // UpdateWebhook to update webhook -func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (*model.Webhook, error) { +func (p *provider) UpdateWebhook(ctx context.Context, webhook *models.Webhook) (*model.Webhook, error) { webhook.UpdatedAt = time.Now().Unix() // Event is changed if !strings.Contains(webhook.EventName, "-") { @@ -43,7 +43,7 @@ func (p *provider) UpdateWebhook(ctx context.Context, webhook models.Webhook) (* } // ListWebhooks to list webhook -func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) (*model.Webhooks, error) { +func (p *provider) ListWebhook(ctx context.Context, pagination *model.Pagination) (*model.Webhooks, error) { var webhooks []models.Webhook result := p.db.Limit(int(pagination.Limit)).Offset(int(pagination.Offset)).Order("created_at DESC").Find(&webhooks) if result.Error != nil { @@ -61,14 +61,14 @@ func (p *provider) ListWebhook(ctx context.Context, pagination model.Pagination) responseWebhooks = append(responseWebhooks, w.AsAPIWebhook()) } return &model.Webhooks{ - Pagination: &paginationClone, + Pagination: paginationClone, Webhooks: responseWebhooks, }, nil } // GetWebhookByID to get webhook by id func (p *provider) GetWebhookByID(ctx context.Context, webhookID string) (*model.Webhook, error) { - var webhook models.Webhook + var webhook *models.Webhook result := p.db.Where("id = ?", webhookID).First(&webhook) if result.Error != nil { diff --git a/server/db/providers/sql/webhook_log.go b/server/db/providers/sql/webhook_log.go index 0ccbca2..cf50be2 100644 --- a/server/db/providers/sql/webhook_log.go +++ b/server/db/providers/sql/webhook_log.go @@ -12,7 +12,7 @@ import ( ) // AddWebhookLog to add webhook log -func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookLog) (*model.WebhookLog, error) { +func (p *provider) AddWebhookLog(ctx context.Context, webhookLog *models.WebhookLog) (*model.WebhookLog, error) { if webhookLog.ID == "" { webhookLog.ID = uuid.New().String() } @@ -32,7 +32,7 @@ func (p *provider) AddWebhookLog(ctx context.Context, webhookLog models.WebhookL } // ListWebhookLogs to list webhook logs -func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Pagination, webhookID string) (*model.WebhookLogs, error) { +func (p *provider) ListWebhookLogs(ctx context.Context, pagination *model.Pagination, webhookID string) (*model.WebhookLogs, error) { var webhookLogs []models.WebhookLog var result *gorm.DB var totalRes *gorm.DB @@ -63,6 +63,6 @@ func (p *provider) ListWebhookLogs(ctx context.Context, pagination model.Paginat } return &model.WebhookLogs{ WebhookLogs: responseWebhookLogs, - Pagination: &paginationClone, + Pagination: paginationClone, }, nil } diff --git a/server/env/persist_env.go b/server/env/persist_env.go index 719c91d..c930b01 100644 --- a/server/env/persist_env.go +++ b/server/env/persist_env.go @@ -134,12 +134,11 @@ func PersistEnv() error { return err } - env = models.Env{ + env = &models.Env{ Hash: encodedHash, EnvData: encryptedConfig, } - - env, err = db.Provider.AddEnv(ctx, env) + _, err = db.Provider.AddEnv(ctx, env) if err != nil { log.Debug("Error while persisting env data to db: ", err) return err diff --git a/server/handlers/oauth_callback.go b/server/handlers/oauth_callback.go index 1c547e2..ed6a81a 100644 --- a/server/handlers/oauth_callback.go +++ b/server/handlers/oauth_callback.go @@ -55,7 +55,7 @@ func OAuthCallbackHandler() gin.HandlerFunc { inputRoles := strings.Split(sessionSplit[2], ",") scopes := strings.Split(sessionSplit[3], ",") - user := models.User{} + var user *models.User oauthCode := ctx.Request.FormValue("code") switch provider { case constants.AuthRecipeMethodGoogle: @@ -263,7 +263,7 @@ func OAuthCallbackHandler() gin.HandlerFunc { } else { utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, provider, user) } - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(ctx.Request), IP: utils.GetIP(ctx.Request), @@ -279,15 +279,14 @@ func OAuthCallbackHandler() gin.HandlerFunc { } } -func processGoogleUserInfo(code string) (models.User, error) { - user := models.User{} +func processGoogleUserInfo(code string) (*models.User, error) { + var user *models.User ctx := context.Background() oauth2Token, err := oauth.OAuthProviders.GoogleConfig.Exchange(ctx, code) if err != nil { log.Debug("Failed to exchange code for token: ", err) return user, fmt.Errorf("invalid google exchange code: %s", err.Error()) } - verifier := oauth.OIDCProviders.GoogleOIDC.Verifier(&oidc.Config{ClientID: oauth.OAuthProviders.GoogleConfig.ClientID}) // Extract the ID Token from OAuth2 token. @@ -312,8 +311,8 @@ func processGoogleUserInfo(code string) (models.User, error) { return user, nil } -func processGithubUserInfo(code string) (models.User, error) { - user := models.User{} +func processGithubUserInfo(code string) (*models.User, error) { + var user *models.User oauth2Token, err := oauth.OAuthProviders.GithubConfig.Exchange(context.TODO(), code) if err != nil { log.Debug("Failed to exchange code for token: ", err) @@ -409,7 +408,7 @@ func processGithubUserInfo(code string) (models.User, error) { } } - user = models.User{ + user = &models.User{ GivenName: &firstName, FamilyName: &lastName, Picture: &picture, @@ -419,8 +418,8 @@ func processGithubUserInfo(code string) (models.User, error) { return user, nil } -func processFacebookUserInfo(code string) (models.User, error) { - user := models.User{} +func processFacebookUserInfo(code string) (*models.User, error) { + var user *models.User oauth2Token, err := oauth.OAuthProviders.FacebookConfig.Exchange(context.TODO(), code) if err != nil { log.Debug("Invalid facebook exchange code: ", err) @@ -460,7 +459,7 @@ func processFacebookUserInfo(code string) (models.User, error) { lastName := fmt.Sprintf("%v", userRawData["last_name"]) picture := fmt.Sprintf("%v", picDataObject["url"]) - user = models.User{ + user = &models.User{ GivenName: &firstName, FamilyName: &lastName, Picture: &picture, @@ -470,8 +469,8 @@ func processFacebookUserInfo(code string) (models.User, error) { return user, nil } -func processLinkedInUserInfo(code string) (models.User, error) { - user := models.User{} +func processLinkedInUserInfo(code string) (*models.User, error) { + var user *models.User oauth2Token, err := oauth.OAuthProviders.LinkedInConfig.Exchange(context.TODO(), code) if err != nil { log.Debug("Failed to exchange code for token: ", err) @@ -542,7 +541,7 @@ func processLinkedInUserInfo(code string) (models.User, error) { profilePicture := userRawData["profilePicture"].(map[string]interface{})["displayImage~"].(map[string]interface{})["elements"].([]interface{})[0].(map[string]interface{})["identifiers"].([]interface{})[0].(map[string]interface{})["identifier"].(string) emailAddress := emailRawData["elements"].([]interface{})[0].(map[string]interface{})["handle~"].(map[string]interface{})["emailAddress"].(string) - user = models.User{ + user = &models.User{ GivenName: &firstName, FamilyName: &lastName, Picture: &profilePicture, @@ -552,8 +551,8 @@ func processLinkedInUserInfo(code string) (models.User, error) { return user, nil } -func processAppleUserInfo(code string) (models.User, error) { - user := models.User{} +func processAppleUserInfo(code string) (*models.User, error) { + var user *models.User oauth2Token, err := oauth.OAuthProviders.AppleConfig.Exchange(context.TODO(), code) if err != nil { log.Debug("Failed to exchange code for token: ", err) @@ -605,8 +604,8 @@ func processAppleUserInfo(code string) (models.User, error) { return user, err } -func processTwitterUserInfo(code, verifier string) (models.User, error) { - user := models.User{} +func processTwitterUserInfo(code, verifier string) (*models.User, error) { + var user *models.User oauth2Token, err := oauth.OAuthProviders.TwitterConfig.Exchange(context.TODO(), code, oauth2.SetAuthURLParam("code_verifier", verifier)) if err != nil { log.Debug("Failed to exchange code for token: ", err) @@ -662,7 +661,7 @@ func processTwitterUserInfo(code, verifier string) (models.User, error) { nickname := userRawData["username"].(string) profilePicture := userRawData["profile_image_url"].(string) - user = models.User{ + user = &models.User{ GivenName: &firstName, FamilyName: &lastName, Picture: &profilePicture, @@ -673,8 +672,8 @@ func processTwitterUserInfo(code, verifier string) (models.User, error) { } // process microsoft user information -func processMicrosoftUserInfo(code string) (models.User, error) { - user := models.User{} +func processMicrosoftUserInfo(code string) (*models.User, error) { + var user *models.User ctx := context.Background() oauth2Token, err := oauth.OAuthProviders.MicrosoftConfig.Exchange(ctx, code) if err != nil { diff --git a/server/handlers/verify_email.go b/server/handlers/verify_email.go index 452820f..2ed9280 100644 --- a/server/handlers/verify_email.go +++ b/server/handlers/verify_email.go @@ -178,8 +178,7 @@ func VerifyEmailHandler() gin.HandlerFunc { } else { utils.RegisterEvent(c, constants.UserLoginWebhookEvent, loginMethod, user) } - - db.Provider.AddSession(c, models.Session{ + db.Provider.AddSession(c, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(c.Request), IP: utils.GetIP(c.Request), diff --git a/server/resolvers/add_email_template.go b/server/resolvers/add_email_template.go index 311b18a..487edc2 100644 --- a/server/resolvers/add_email_template.go +++ b/server/resolvers/add_email_template.go @@ -47,7 +47,7 @@ func AddEmailTemplateResolver(ctx context.Context, params model.AddEmailTemplate design = "" } - _, err = db.Provider.AddEmailTemplate(ctx, models.EmailTemplate{ + _, err = db.Provider.AddEmailTemplate(ctx, &models.EmailTemplate{ EventName: params.EventName, Template: params.Template, Subject: params.Subject, diff --git a/server/resolvers/add_webhook.go b/server/resolvers/add_webhook.go index 596b1e0..3380779 100644 --- a/server/resolvers/add_webhook.go +++ b/server/resolvers/add_webhook.go @@ -43,7 +43,7 @@ func AddWebhookResolver(ctx context.Context, params model.AddWebhookRequest) (*m if params.EventDescription == nil { params.EventDescription = refs.NewStringRef(strings.Join(strings.Split(params.EventName, "."), " ")) } - _, err = db.Provider.AddWebhook(ctx, models.Webhook{ + _, err = db.Provider.AddWebhook(ctx, &models.Webhook{ EventDescription: refs.StringValue(params.EventDescription), EventName: params.EventName, EndPoint: params.Endpoint, diff --git a/server/resolvers/email_templates.go b/server/resolvers/email_templates.go index 7230400..0e1ee66 100644 --- a/server/resolvers/email_templates.go +++ b/server/resolvers/email_templates.go @@ -25,7 +25,6 @@ func EmailTemplatesResolver(ctx context.Context, params *model.PaginatedInput) ( } pagination := utils.GetPagination(params) - emailTemplates, err := db.Provider.ListEmailTemplate(ctx, pagination) if err != nil { log.Debug("failed to get email templates: ", err) diff --git a/server/resolvers/forgot_password.go b/server/resolvers/forgot_password.go index f497b31..028ff11 100644 --- a/server/resolvers/forgot_password.go +++ b/server/resolvers/forgot_password.go @@ -81,7 +81,7 @@ func ForgotPasswordResolver(ctx context.Context, params model.ForgotPasswordInpu log.Debug("Failed to create verification token", err) return res, err } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: constants.VerificationTypeForgotPassword, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), diff --git a/server/resolvers/invite_members.go b/server/resolvers/invite_members.go index c15ca7e..ee5e0a1 100644 --- a/server/resolvers/invite_members.go +++ b/server/resolvers/invite_members.go @@ -105,7 +105,7 @@ func InviteMembersResolver(ctx context.Context, params model.InviteMemberInput) defaultRoles = strings.Split(defaultRolesString, ",") } - user := models.User{ + user := &models.User{ Email: email, Roles: strings.Join(defaultRoles, ","), } @@ -128,7 +128,7 @@ func InviteMembersResolver(ctx context.Context, params model.InviteMemberInput) log.Debug("Failed to create verification token: ", err) } - verificationRequest := models.VerificationRequest{ + verificationRequest := &models.VerificationRequest{ Token: verificationToken, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), Email: email, diff --git a/server/resolvers/login.go b/server/resolvers/login.go index 93d3377..9a886ef 100644 --- a/server/resolvers/login.go +++ b/server/resolvers/login.go @@ -203,7 +203,7 @@ func LoginResolver(ctx context.Context, params model.LoginInput) (*model.AuthRes go func() { utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, constants.AuthRecipeMethodBasicAuth, user) - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/magic_link_login.go b/server/resolvers/magic_link_login.go index 5ce90c8..a500c27 100644 --- a/server/resolvers/magic_link_login.go +++ b/server/resolvers/magic_link_login.go @@ -55,7 +55,7 @@ func MagicLinkLoginResolver(ctx context.Context, params model.MagicLinkLoginInpu inputRoles := []string{} - user := models.User{ + user := &models.User{ Email: params.Email, } @@ -207,7 +207,7 @@ func MagicLinkLoginResolver(ctx context.Context, params model.MagicLinkLoginInpu if err != nil { log.Debug("Failed to create verification token: ", err) } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: verificationType, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), diff --git a/server/resolvers/mobile_login.go b/server/resolvers/mobile_login.go index fc131b0..64a108d 100644 --- a/server/resolvers/mobile_login.go +++ b/server/resolvers/mobile_login.go @@ -132,7 +132,7 @@ func MobileLoginResolver(ctx context.Context, params model.MobileLoginInput) (*m return nil, err } go func() { - utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, constants.AuthRecipeMethodMobileBasicAuth, *user) + utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, constants.AuthRecipeMethodMobileBasicAuth, user) smsproviders.SendSMS(params.PhoneNumber, smsBody.String()) }() return &model.AuthResponse{ @@ -168,7 +168,7 @@ func MobileLoginResolver(ctx context.Context, params model.MobileLoginInput) (*m nonce = uuid.New().String() } - authToken, err := token.CreateAuthToken(gc, *user, roles, scope, constants.AuthRecipeMethodMobileBasicAuth, nonce, code) + authToken, err := token.CreateAuthToken(gc, user, roles, scope, constants.AuthRecipeMethodMobileBasicAuth, nonce, code) if err != nil { log.Debug("Failed to create auth token", err) return res, err @@ -207,8 +207,8 @@ func MobileLoginResolver(ctx context.Context, params model.MobileLoginInput) (*m } go func() { - utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, constants.AuthRecipeMethodMobileBasicAuth, *user) - db.Provider.AddSession(ctx, models.Session{ + utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, constants.AuthRecipeMethodMobileBasicAuth, user) + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/mobile_signup.go b/server/resolvers/mobile_signup.go index 70b6d60..63f5ea0 100644 --- a/server/resolvers/mobile_signup.go +++ b/server/resolvers/mobile_signup.go @@ -130,7 +130,7 @@ func MobileSignupResolver(ctx context.Context, params *model.MobileSignUpInput) } } - user := models.User{ + user := &models.User{ Email: emailInput, PhoneNumber: &mobile, } @@ -298,7 +298,7 @@ func MobileSignupResolver(ctx context.Context, params *model.MobileSignUpInput) go func() { utils.RegisterEvent(ctx, constants.UserSignUpWebhookEvent, constants.AuthRecipeMethodMobileBasicAuth, user) - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/resend_otp.go b/server/resolvers/resend_otp.go index dafe9dd..74da143 100644 --- a/server/resolvers/resend_otp.go +++ b/server/resolvers/resend_otp.go @@ -32,7 +32,7 @@ func ResendOTPResolver(ctx context.Context, params model.ResendOTPRequest) (*mod log.Debug("Email or phone number is required") return nil, errors.New("email or phone number is required") } - var user models.User + var user *models.User var err error if email != "" { isEmailServiceEnabled, err := memorystore.Provider.GetBoolStoreEnvVariable(constants.EnvKeyIsEmailServiceEnabled) @@ -47,10 +47,7 @@ func ResendOTPResolver(ctx context.Context, params model.ResendOTPRequest) (*mod log.Debug("Email service not enabled: ", err) return nil, errors.New("email service not enabled") } - // TODO fix after refs fixes - var u *models.User - u, err = db.Provider.GetUserByPhoneNumber(ctx, phoneNumber) - user = *u + user, err = db.Provider.GetUserByPhoneNumber(ctx, phoneNumber) } if err != nil { log.Debug("Failed to get user by email: ", err) diff --git a/server/resolvers/resend_verify_email.go b/server/resolvers/resend_verify_email.go index 6c94024..b5a789f 100644 --- a/server/resolvers/resend_verify_email.go +++ b/server/resolvers/resend_verify_email.go @@ -67,7 +67,7 @@ func ResendVerifyEmailResolver(ctx context.Context, params model.ResendVerifyEma if err != nil { log.Debug("Failed to create verification token: ", err) } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: params.Identifier, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), diff --git a/server/resolvers/signup.go b/server/resolvers/signup.go index 757efeb..1828033 100644 --- a/server/resolvers/signup.go +++ b/server/resolvers/signup.go @@ -117,7 +117,7 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR } } - user := models.User{ + user := &models.User{ Email: params.Email, } @@ -208,7 +208,7 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR log.Debug("Failed to create verification token: ", err) return res, err } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: verificationType, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), @@ -302,7 +302,7 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR go func() { utils.RegisterEvent(ctx, constants.UserSignUpWebhookEvent, constants.AuthRecipeMethodBasicAuth, user) - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/update_email_template.go b/server/resolvers/update_email_template.go index cf4e948..c08a49f 100644 --- a/server/resolvers/update_email_template.go +++ b/server/resolvers/update_email_template.go @@ -34,7 +34,7 @@ func UpdateEmailTemplateResolver(ctx context.Context, params model.UpdateEmailTe return nil, err } - emailTemplateDetails := models.EmailTemplate{ + emailTemplateDetails := &models.EmailTemplate{ ID: emailTemplate.ID, Key: emailTemplate.ID, EventName: emailTemplate.EventName, diff --git a/server/resolvers/update_profile.go b/server/resolvers/update_profile.go index da74258..a8fcb5a 100644 --- a/server/resolvers/update_profile.go +++ b/server/resolvers/update_profile.go @@ -242,7 +242,7 @@ func UpdateProfileResolver(ctx context.Context, params model.UpdateProfileInput) log.Debug("Failed to create verification token: ", err) return res, err } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: verificationType, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), diff --git a/server/resolvers/update_user.go b/server/resolvers/update_user.go index bd61428..d9741ae 100644 --- a/server/resolvers/update_user.go +++ b/server/resolvers/update_user.go @@ -147,7 +147,7 @@ func UpdateUserResolver(ctx context.Context, params model.UpdateUserInput) (*mod if err != nil { log.Debug("Failed to create verification token: ", err) } - _, err = db.Provider.AddVerificationRequest(ctx, models.VerificationRequest{ + _, err = db.Provider.AddVerificationRequest(ctx, &models.VerificationRequest{ Token: verificationToken, Identifier: verificationType, ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), diff --git a/server/resolvers/update_webhook.go b/server/resolvers/update_webhook.go index 5783984..3d09568 100644 --- a/server/resolvers/update_webhook.go +++ b/server/resolvers/update_webhook.go @@ -41,7 +41,7 @@ func UpdateWebhookResolver(ctx context.Context, params model.UpdateWebhookReques } headersString = string(headerBytes) } - webhookDetails := models.Webhook{ + webhookDetails := &models.Webhook{ ID: webhook.ID, Key: webhook.ID, EventName: refs.StringValue(webhook.EventName), diff --git a/server/resolvers/verification_requests.go b/server/resolvers/verification_requests.go index 4a629de..9a55be7 100644 --- a/server/resolvers/verification_requests.go +++ b/server/resolvers/verification_requests.go @@ -27,7 +27,6 @@ func VerificationRequestsResolver(ctx context.Context, params *model.PaginatedIn } pagination := utils.GetPagination(params) - res, err := db.Provider.ListVerificationRequests(ctx, pagination) if err != nil { log.Debug("Failed to get verification requests: ", err) diff --git a/server/resolvers/verify_email.go b/server/resolvers/verify_email.go index d1fd81d..9ee0181 100644 --- a/server/resolvers/verify_email.go +++ b/server/resolvers/verify_email.go @@ -129,7 +129,7 @@ func VerifyEmailResolver(ctx context.Context, params model.VerifyEmailInput) (*m utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, loginMethod, user) } - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/verify_otp.go b/server/resolvers/verify_otp.go index 124ee3f..290b6fd 100644 --- a/server/resolvers/verify_otp.go +++ b/server/resolvers/verify_otp.go @@ -55,14 +55,11 @@ func VerifyOtpResolver(ctx context.Context, params model.VerifyOTPRequest) (*mod log.Debug("Failed to verify otp request: Timeout") return res, fmt.Errorf("otp expired") } - var user models.User + var user *models.User if currentField == models.FieldNameEmail { user, err = db.Provider.GetUserByEmail(ctx, refs.StringValue(params.Email)) } else { - // TODO fix after refs of db providers are fixed - var u *models.User - u, err = db.Provider.GetUserByPhoneNumber(ctx, refs.StringValue(params.PhoneNumber)) - user = *u + user, err = db.Provider.GetUserByPhoneNumber(ctx, refs.StringValue(params.PhoneNumber)) } if user.ID == "" && err != nil { log.Debug("Failed to get user by email: ", err) @@ -118,7 +115,7 @@ func VerifyOtpResolver(ctx context.Context, params model.VerifyOTPRequest) (*mod utils.RegisterEvent(ctx, constants.UserLoginWebhookEvent, loginMethod, user) } - db.Provider.AddSession(ctx, models.Session{ + db.Provider.AddSession(ctx, &models.Session{ UserID: user.ID, UserAgent: utils.GetUserAgent(gc.Request), IP: utils.GetIP(gc.Request), diff --git a/server/resolvers/webhook_logs.go b/server/resolvers/webhook_logs.go index 7c9cc7b..cd7b62d 100644 --- a/server/resolvers/webhook_logs.go +++ b/server/resolvers/webhook_logs.go @@ -25,7 +25,7 @@ func WebhookLogsResolver(ctx context.Context, params *model.ListWebhookLogReques return nil, fmt.Errorf("unauthorized") } - var pagination model.Pagination + var pagination *model.Pagination var webhookID string if params != nil { @@ -37,7 +37,7 @@ func WebhookLogsResolver(ctx context.Context, params *model.ListWebhookLogReques pagination = utils.GetPagination(nil) webhookID = "" } - + // TODO fix webhookLogs, err := db.Provider.ListWebhookLogs(ctx, pagination, webhookID) if err != nil { log.Debug("failed to get webhook logs: ", err) diff --git a/server/resolvers/webhooks.go b/server/resolvers/webhooks.go index 5a6ccbb..733df82 100644 --- a/server/resolvers/webhooks.go +++ b/server/resolvers/webhooks.go @@ -25,7 +25,6 @@ func WebhooksResolver(ctx context.Context, params *model.PaginatedInput) (*model } pagination := utils.GetPagination(params) - webhooks, err := db.Provider.ListWebhook(ctx, pagination) if err != nil { log.Debug("failed to get webhooks: ", err) diff --git a/server/test/delete_email_template_test.go b/server/test/delete_email_template_test.go index ef79db9..c32b6d5 100644 --- a/server/test/delete_email_template_test.go +++ b/server/test/delete_email_template_test.go @@ -24,7 +24,7 @@ func deleteEmailTemplateTest(t *testing.T, s TestSetup) { req.Header.Set("Cookie", fmt.Sprintf("%s=%s", constants.AdminCookieName, h)) // get all email templates - emailTemplates, err := db.Provider.ListEmailTemplate(ctx, model.Pagination{ + emailTemplates, err := db.Provider.ListEmailTemplate(ctx, &model.Pagination{ Limit: 10, Page: 1, Offset: 0, @@ -41,7 +41,7 @@ func deleteEmailTemplateTest(t *testing.T, s TestSetup) { assert.NotEmpty(t, res.Message) } - emailTemplates, err = db.Provider.ListEmailTemplate(ctx, model.Pagination{ + emailTemplates, err = db.Provider.ListEmailTemplate(ctx, &model.Pagination{ Limit: 10, Page: 1, Offset: 0, diff --git a/server/test/delete_webhook_test.go b/server/test/delete_webhook_test.go index ab9b9f2..3404a42 100644 --- a/server/test/delete_webhook_test.go +++ b/server/test/delete_webhook_test.go @@ -24,7 +24,7 @@ func deleteWebhookTest(t *testing.T, s TestSetup) { req.Header.Set("Cookie", fmt.Sprintf("%s=%s", constants.AdminCookieName, h)) // get all webhooks - webhooks, err := db.Provider.ListWebhook(ctx, model.Pagination{ + webhooks, err := db.Provider.ListWebhook(ctx, &model.Pagination{ Limit: 20, Page: 1, Offset: 0, @@ -41,14 +41,14 @@ func deleteWebhookTest(t *testing.T, s TestSetup) { assert.NotEmpty(t, res.Message) } - webhooks, err = db.Provider.ListWebhook(ctx, model.Pagination{ + webhooks, err = db.Provider.ListWebhook(ctx, &model.Pagination{ Limit: 20, Page: 1, Offset: 0, }) assert.NoError(t, err) assert.Len(t, webhooks.Webhooks, 0) - webhookLogs, err := db.Provider.ListWebhookLogs(ctx, model.Pagination{ + webhookLogs, err := db.Provider.ListWebhookLogs(ctx, &model.Pagination{ Limit: 100, Page: 1, Offset: 0, diff --git a/server/test/update_all_users_tests.go b/server/test/update_all_users_tests.go index 375158f..b2e507f 100644 --- a/server/test/update_all_users_tests.go +++ b/server/test/update_all_users_tests.go @@ -18,7 +18,7 @@ func updateAllUsersTest(t *testing.T, s TestSetup) { t.Run("Should update all users", func(t *testing.T) { _, ctx := createContext(s) for i := 0; i < 10; i++ { - user := models.User{ + user := &models.User{ Email: fmt.Sprintf("update_all_user_%d_%s", i, s.TestInfo.Email), SignupMethods: constants.AuthRecipeMethodBasicAuth, Roles: "user", @@ -33,7 +33,7 @@ func updateAllUsersTest(t *testing.T, s TestSetup) { }, nil) assert.NoError(t, err) - listUsers, err := db.Provider.ListUsers(ctx, model.Pagination{ + listUsers, err := db.Provider.ListUsers(ctx, &model.Pagination{ Limit: 20, Offset: 0, }) @@ -49,7 +49,7 @@ func updateAllUsersTest(t *testing.T, s TestSetup) { }, updateIds) assert.NoError(t, err) - listUsers, err = db.Provider.ListUsers(ctx, model.Pagination{ + listUsers, err = db.Provider.ListUsers(ctx, &model.Pagination{ Limit: 20, Offset: 0, }) diff --git a/server/test/validate_jwt_token_test.go b/server/test/validate_jwt_token_test.go index d2ab257..f9a108a 100644 --- a/server/test/validate_jwt_token_test.go +++ b/server/test/validate_jwt_token_test.go @@ -39,7 +39,7 @@ func validateJwtTokenTest(t *testing.T, s TestSetup) { }) scope := []string{"openid", "email", "profile", "offline_access"} - user := models.User{ + user := &models.User{ ID: uuid.New().String(), Email: "jwt_test_" + s.TestInfo.Email, Roles: "user", diff --git a/server/token/auth_token.go b/server/token/auth_token.go index 6d2c942..f482db8 100644 --- a/server/token/auth_token.go +++ b/server/token/auth_token.go @@ -51,7 +51,7 @@ type SessionData struct { } // CreateAuthToken creates a new auth token when userlogs in -func CreateAuthToken(gc *gin.Context, user models.User, roles, scope []string, loginMethod, nonce string, code string) (*Token, error) { +func CreateAuthToken(gc *gin.Context, user *models.User, roles, scope []string, loginMethod, nonce string, code string) (*Token, error) { hostname := parsers.GetHost(gc) _, fingerPrintHash, sessionTokenExpiresAt, err := CreateSessionToken(user, nonce, roles, scope, loginMethod) if err != nil { @@ -104,7 +104,7 @@ func CreateAuthToken(gc *gin.Context, user models.User, roles, scope []string, l } // CreateSessionToken creates a new session token -func CreateSessionToken(user models.User, nonce string, roles, scope []string, loginMethod string) (*SessionData, string, int64, error) { +func CreateSessionToken(user *models.User, nonce string, roles, scope []string, loginMethod string) (*SessionData, string, int64, error) { expiresAt := time.Now().AddDate(1, 0, 0).Unix() fingerPrintMap := &SessionData{ Nonce: nonce, @@ -125,7 +125,7 @@ func CreateSessionToken(user models.User, nonce string, roles, scope []string, l } // CreateRefreshToken util to create JWT token -func CreateRefreshToken(user models.User, roles, scopes []string, hostname, nonce, loginMethod string) (string, int64, error) { +func CreateRefreshToken(user *models.User, roles, scopes []string, hostname, nonce, loginMethod string) (string, int64, error) { // expires in 1 year expiryBound := time.Hour * 8760 expiresAt := time.Now().Add(expiryBound).Unix() @@ -157,7 +157,7 @@ func CreateRefreshToken(user models.User, roles, scopes []string, hostname, nonc // CreateAccessToken util to create JWT token, based on // user information, roles config and CUSTOM_ACCESS_TOKEN_SCRIPT -func CreateAccessToken(user models.User, roles, scopes []string, hostName, nonce, loginMethod string) (string, int64, error) { +func CreateAccessToken(user *models.User, roles, scopes []string, hostName, nonce, loginMethod string) (string, int64, error) { expireTime, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyAccessTokenExpiryTime) if err != nil { return "", 0, err @@ -372,7 +372,7 @@ func ValidateBrowserSession(gc *gin.Context, encryptedSession string) (*SessionD // user information, roles config and CUSTOM_ACCESS_TOKEN_SCRIPT // For response_type (code) / authorization_code grant nonce should be empty // for implicit flow it should be present to verify with actual state -func CreateIDToken(user models.User, roles []string, hostname, nonce, atHash, cHash, loginMethod string) (string, int64, error) { +func CreateIDToken(user *models.User, roles []string, hostname, nonce, atHash, cHash, loginMethod string) (string, int64, error) { expireTime, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyAccessTokenExpiryTime) if err != nil { return "", 0, err diff --git a/server/utils/pagination.go b/server/utils/pagination.go index e27eb53..d0bfff9 100644 --- a/server/utils/pagination.go +++ b/server/utils/pagination.go @@ -7,7 +7,7 @@ import ( // GetPagination helps getting pagination data from paginated input // also returns default limit and offset if pagination data is not present -func GetPagination(paginatedInput *model.PaginatedInput) model.Pagination { +func GetPagination(paginatedInput *model.PaginatedInput) *model.Pagination { limit := int64(constants.DefaultLimit) page := int64(1) @@ -21,7 +21,7 @@ func GetPagination(paginatedInput *model.PaginatedInput) model.Pagination { } } - return model.Pagination{ + return &model.Pagination{ Limit: limit, Offset: (page - 1) * limit, Page: page, diff --git a/server/utils/webhook.go b/server/utils/webhook.go index 4c6fbd0..2571cf5 100644 --- a/server/utils/webhook.go +++ b/server/utils/webhook.go @@ -18,10 +18,10 @@ import ( // RegisterEvent util to register event // TODO change user to user ref -func RegisterEvent(ctx context.Context, eventName string, authRecipe string, user models.User) error { +func RegisterEvent(ctx context.Context, eventName string, authRecipe string, user *models.User) error { webhooks, err := db.Provider.GetWebhookByEventName(ctx, eventName) if err != nil { - log.Debug("Error getting webhook: %v", err) + log.Debug("error getting webhook: %v", err) return err } for _, webhook := range webhooks { @@ -63,7 +63,7 @@ func RegisterEvent(ctx context.Context, eventName string, authRecipe string, use continue } if envKey == constants.TestEnv { - _, err := db.Provider.AddWebhookLog(ctx, models.WebhookLog{ + _, err := db.Provider.AddWebhookLog(ctx, &models.WebhookLog{ HttpStatus: 200, Request: string(requestBody), Response: string(`{"message": "test"}`), @@ -104,7 +104,7 @@ func RegisterEvent(ctx context.Context, eventName string, authRecipe string, use } statusCode := int64(resp.StatusCode) - _, err = db.Provider.AddWebhookLog(ctx, models.WebhookLog{ + _, err = db.Provider.AddWebhookLog(ctx, &models.WebhookLog{ HttpStatus: statusCode, Request: string(requestBody), Response: string(responseBytes),