From c7f41cd00959b86ba3c5b33dc41ebe9ccd8e1e31 Mon Sep 17 00:00:00 2001 From: manoj Date: Thu, 3 Nov 2022 23:41:12 +0530 Subject: [PATCH] verification request crud added --- .../couchbase/verification_requests.go | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/server/db/providers/couchbase/verification_requests.go b/server/db/providers/couchbase/verification_requests.go index 9692f79..87840d5 100644 --- a/server/db/providers/couchbase/verification_requests.go +++ b/server/db/providers/couchbase/verification_requests.go @@ -2,10 +2,13 @@ package couchbase import ( "context" + "fmt" + "log" "time" "github.com/authorizerdev/authorizer/server/db/models" "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/couchbase/gocb/v2" "github.com/google/uuid" ) @@ -17,6 +20,13 @@ func (p *provider) AddVerificationRequest(ctx context.Context, verificationReque verificationRequest.CreatedAt = time.Now().Unix() verificationRequest.UpdatedAt = time.Now().Unix() + insertOpt := gocb.InsertOptions{ + Context: ctx, + } + _, err := p.db.Collection(models.Collections.VerificationRequest).Insert(verificationRequest.ID, verificationRequest, &insertOpt) + if err != nil { + return verificationRequest, err + } return verificationRequest, nil } @@ -24,23 +34,76 @@ 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 + scope := p.db.Scope("_default") + query := fmt.Sprintf("SELECT _id, jwt_token, identifier, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM auth._default.%s WHERE token = '%s' LIMIT 1", models.Collections.VerificationRequest, token) + queryResult, err := scope.Query(query, &gocb.QueryOptions{}) + if err != nil { + return verificationRequest, err + } + err = queryResult.One(&verificationRequest) + if err != nil { + return verificationRequest, err + } 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 + scope := p.db.Scope("_default") + query := fmt.Sprintf("SELECT _id, jwt_token, identifier, expires_at, email, nonce, redirect_uri, created_at, updated_at FROM auth._default.%s WHERE email = '%s' AND identifier = '%s' LIMIT 1", models.Collections.VerificationRequest, email, identifier) + queryResult, err := scope.Query(query, &gocb.QueryOptions{}) + if err != nil { + return verificationRequest, err + } + err = queryResult.One(&verificationRequest) + if err != nil { + return verificationRequest, err + } 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) { - return nil, nil + var verificationRequests []*model.VerificationRequest + scope := p.db.Scope("_default") + paginationClone := pagination + + query := fmt.Sprintf("SELECT _id, env, created_at, updated_at FROM auth._default.%s OFFSET %d LIMIT %d", models.Collections.VerificationRequest, paginationClone.Offset, paginationClone.Limit) + queryResult, err := scope.Query(query, &gocb.QueryOptions{}) + + if err != nil { + return nil, err + } + for queryResult.Next() { + var verificationRequest models.VerificationRequest + err := queryResult.Row(&verificationRequest) + if err != nil { + log.Fatal(err) + } + verificationRequests = append(verificationRequests, verificationRequest.AsAPIVerificationRequest()) + } + + if err := queryResult.Err(); err != nil { + return nil, err + + } + return &model.VerificationRequests{ + VerificationRequests: verificationRequests, + Pagination: &paginationClone, + }, nil } // DeleteVerificationRequest to delete verification request from database func (p *provider) DeleteVerificationRequest(ctx context.Context, verificationRequest models.VerificationRequest) error { + removeOpt := gocb.RemoveOptions{ + Context: ctx, + } + _, err := p.db.Collection(models.Collections.Webhook).Remove(verificationRequest.ID, &removeOpt) + if err != nil { + return err + } return nil }