authorizer/server/db/providers/couchbase/provider.go

56 lines
1.4 KiB
Go
Raw Normal View History

2022-10-09 18:54:14 +00:00
package couchbase
import (
"context"
"os"
"reflect"
"github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/db/models"
"github.com/authorizerdev/authorizer/server/memorystore"
"github.com/couchbase/gocb/v2"
)
// TODO change following provider to new db provider
type provider struct {
db *gocb.Bucket
}
// NewProvider returns a new SQL provider
// TODO change following provider to new db provider
func NewProvider() (*provider, error) {
scopeName := os.Getenv(constants.EnvCouchbaseScope)
bucketName := os.Getenv(constants.EnvCouchbaseBucket)
dbURL := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabaseURL
userName := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabaseUsername
password := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabasePassword
opts := gocb.ClusterOptions{
Username: userName,
Password: password,
}
cluster, err := gocb.Connect(dbURL, opts)
if err != nil {
return nil, err
}
bucket := cluster.Bucket(bucketName)
v := reflect.ValueOf(models.Collections)
for i := 0; i < v.NumField(); i++ {
field := v.Field(i)
user := gocb.CollectionSpec{
Name: field.String(),
ScopeName: scopeName,
}
collectionOpts := gocb.CreateCollectionOptions{
Context: context.TODO(),
}
2022-11-26 12:13:39 +00:00
_ = bucket.Collections().CreateCollection(user, &collectionOpts)
2022-10-09 18:54:14 +00:00
}
2022-11-26 12:13:39 +00:00
2022-10-09 18:54:14 +00:00
return &provider{
db: bucket,
}, nil
}