@@ -4,54 +4,52 @@ import (
44 "context"
55 "errors"
66 "fmt"
7- "os"
87 "reflect"
98
10- "github.com/authorizerdev/authorizer/server/constants"
9+ "github.com/couchbase/gocb/v2"
10+
1111 "github.com/authorizerdev/authorizer/server/db/models"
1212 "github.com/authorizerdev/authorizer/server/memorystore"
13- "github.com/couchbase/gocb/v2"
1413)
1514
16- // TODO change following provider to new db provider
15+ const (
16+ defaultBucketName = "authorizer"
17+ defaultScope = "_default"
18+ )
19+
1720type provider struct {
1821 db * gocb.Scope
1922 scopeName string
2023}
2124
22- // NewProvider returns a new SQL provider
23- // TODO change following provider to new db provider
25+ // NewProvider returns a new Couchbase provider
2426func NewProvider () (* provider , error ) {
25- // scopeName := os.Getenv(constants.EnvCouchbaseScope)
26- bucketName := os .Getenv (constants .EnvCouchbaseBucket )
27- scopeName := os .Getenv (constants .EnvCouchbaseScope )
28-
27+ bucketName := memorystore .RequiredEnvStoreObj .GetRequiredEnv ().CouchbaseBucket
28+ scopeName := memorystore .RequiredEnvStoreObj .GetRequiredEnv ().CouchbaseScope
2929 dbURL := memorystore .RequiredEnvStoreObj .GetRequiredEnv ().DatabaseURL
3030 userName := memorystore .RequiredEnvStoreObj .GetRequiredEnv ().DatabaseUsername
3131 password := memorystore .RequiredEnvStoreObj .GetRequiredEnv ().DatabasePassword
32-
3332 opts := gocb.ClusterOptions {
3433 Username : userName ,
3534 Password : password ,
3635 }
37-
36+ if bucketName == "" {
37+ bucketName = defaultBucketName
38+ }
39+ if scopeName == "" {
40+ scopeName = defaultScope
41+ }
3842 cluster , err := gocb .Connect (dbURL , opts )
39-
4043 if err != nil {
4144 return nil , err
4245 }
43-
4446 // To create the bucket and scope if not exist
4547 bucket , err := CreateBucketAndScope (cluster , bucketName , scopeName )
46-
4748 if err != nil {
4849 return nil , err
4950 }
50-
5151 scope := bucket .Scope (scopeName )
52-
5352 scopeIdentifier := fmt .Sprintf ("%s.%s" , bucketName , scopeName )
54-
5553 v := reflect .ValueOf (models .Collections )
5654 for i := 0 ; i < v .NumField (); i ++ {
5755 field := v .Field (i )
@@ -62,10 +60,10 @@ func NewProvider() (*provider, error) {
6260 collectionOpts := gocb.CreateCollectionOptions {
6361 Context : context .TODO (),
6462 }
65- _ = bucket .Collections ().CreateCollection (user , & collectionOpts )
66- // if err != nil && !errors.Is(err, gocb.ErrCollectionExists) {
67- // return nil, err
68- // }
63+ err = bucket .Collections ().CreateCollection (user , & collectionOpts )
64+ if err != nil && ! errors .Is (err , gocb .ErrCollectionExists ) {
65+ return nil , err
66+ }
6967 indexQuery := fmt .Sprintf ("CREATE PRIMARY INDEX ON %s.%s" , scopeIdentifier , field .String ())
7068 scope .Query (indexQuery , nil )
7169 }
@@ -100,15 +98,15 @@ func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName st
10098 }, nil )
10199
102100 bucket := cluster .Bucket (bucketName )
103-
104101 if err != nil && ! errors .Is (err , gocb .ErrBucketExists ) {
105102 return bucket , err
106103 }
107104
108- err = bucket .Collections ().CreateScope (scopeName , nil )
109-
110- if err != nil && ! errors .Is (err , gocb .ErrScopeExists ) {
111- return bucket , err
105+ if scopeName != defaultScope {
106+ err = bucket .Collections ().CreateScope (scopeName , nil )
107+ if err != nil && ! errors .Is (err , gocb .ErrScopeExists ) {
108+ return bucket , err
109+ }
112110 }
113111
114112 return bucket , nil
0 commit comments