Skip to content

Commit ed6a1ce

Browse files
committed
feat: add env queries
1 parent fd52d6e commit ed6a1ce

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

server/db/providers/cassandradb/env.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package cassandradb
22

33
import (
4+
"fmt"
5+
"log"
46
"time"
57

68
"github.com/authorizerdev/authorizer/server/db/models"
9+
"github.com/gocql/gocql"
710
"github.com/google/uuid"
811
)
912

@@ -15,18 +18,37 @@ func (p *provider) AddEnv(env models.Env) (models.Env, error) {
1518

1619
env.CreatedAt = time.Now().Unix()
1720
env.UpdatedAt = time.Now().Unix()
21+
insertEnvQuery := fmt.Sprintf("INSERT INTO %s (id, env, hash, created_at, updated_at) VALUES ('%s', '%s', '%s', %d, %d)", KeySpace+"."+models.Collections.Env, env.ID, env.EnvData, env.Hash, env.CreatedAt, env.UpdatedAt)
22+
err := p.db.Query(insertEnvQuery).Exec()
23+
if err != nil {
24+
return env, err
25+
}
26+
1827
return env, nil
1928
}
2029

2130
// UpdateEnv to update environment information in database
2231
func (p *provider) UpdateEnv(env models.Env) (models.Env, error) {
2332
env.UpdatedAt = time.Now().Unix()
33+
34+
updateEnvQuery := fmt.Sprintf("UPDATE %s SET env = '%s', updated_at = %d WHERE id = '%s'", KeySpace+"."+models.Collections.Env, env.EnvData, env.UpdatedAt, env.ID)
35+
err := p.db.Query(updateEnvQuery).Exec()
36+
if err != nil {
37+
return env, err
38+
}
2439
return env, nil
2540
}
2641

2742
// GetEnv to get environment information from database
2843
func (p *provider) GetEnv() (models.Env, error) {
2944
var env models.Env
3045

46+
query := fmt.Sprintf("SELECT id, env, hash, created_at, updated_at FROM %s LIMIT 1", KeySpace+"."+models.Collections.Env)
47+
err := p.db.Query(query).Consistency(gocql.One).Scan(&env.ID, &env.EnvData, &env.Hash, &env.CreatedAt, &env.UpdatedAt)
48+
if err != nil {
49+
log.Println("=> error getting env", err)
50+
return env, err
51+
}
52+
3153
return env, nil
3254
}

server/db/providers/cassandradb/provider.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ type provider struct {
1414
db *cansandraDriver.Session
1515
}
1616

17+
// KeySpace for the cassandra database
18+
var KeySpace string
19+
1720
// NewProvider to initialize arangodb connection
1821
func NewProvider() (*provider, error) {
1922
dbURL := envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseURL)
20-
keySpace := envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseName)
23+
KeySpace = envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseName)
2124
cassandraClient := cansandraDriver.NewCluster(dbURL)
22-
// cassandraClient.Keyspace = keySpace
25+
2326
cassandraClient.RetryPolicy = &cansandraDriver.SimpleRetryPolicy{
2427
NumRetries: 3,
2528
}
@@ -32,7 +35,7 @@ func NewProvider() (*provider, error) {
3235
}
3336

3437
keyspaceQuery := fmt.Sprintf("CREATE KEYSPACE IF NOT EXISTS %s WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor':1}",
35-
keySpace)
38+
KeySpace)
3639
err = session.Query(keyspaceQuery).Exec()
3740
if err != nil {
3841
log.Println("Unable to create keyspace:", err)
@@ -41,29 +44,29 @@ func NewProvider() (*provider, error) {
4144

4245
// make sure collections are present
4346
envCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, env text, hash text, updated_at bigint, created_at bigint, PRIMARY KEY (id))",
44-
keySpace, models.Collections.Env)
47+
KeySpace, models.Collections.Env)
4548
err = session.Query(envCollectionQuery).Exec()
4649
if err != nil {
4750
log.Println("Unable to create env collection:", err)
4851
return nil, err
4952
}
5053

51-
sessionCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, user_id text, user_agent text, ip text, updated_at bigint, created_at bigint, PRIMARY KEY (id))", keySpace, models.Collections.Session)
54+
sessionCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, user_id text, user_agent text, ip text, updated_at bigint, created_at bigint, PRIMARY KEY (id))", KeySpace, models.Collections.Session)
5255
err = session.Query(sessionCollectionQuery).Exec()
5356
if err != nil {
5457
log.Println("Unable to create session collection:", err)
5558
return nil, err
5659
}
5760

58-
userCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, email text, email_verified_at bigint, password text, signup_methods text, given_name text, family_name text, middle_name text, nick_name text, gender text, birthdate text, phone_number text, phone_number_verified_at bigint, picture text, roles text, updated_at bigint, created_at bigint, revoked_timestamp bigint, PRIMARY KEY (id, email))", keySpace, models.Collections.User)
61+
userCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, email text, email_verified_at bigint, password text, signup_methods text, given_name text, family_name text, middle_name text, nick_name text, gender text, birthdate text, phone_number text, phone_number_verified_at bigint, picture text, roles text, updated_at bigint, created_at bigint, revoked_timestamp bigint, PRIMARY KEY (id, email))", KeySpace, models.Collections.User)
5962
err = session.Query(userCollectionQuery).Exec()
6063
if err != nil {
6164
log.Println("Unable to create user collection:", err)
6265
return nil, err
6366
}
6467

6568
// token is reserved keyword in cassandra, hence we need to use jwt_token
66-
verificationRequestCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, jwt_token text, identifier text, expires_at bigint, email text, nonce text, redirect_uri text, created_at bigint, updated_at bigint, PRIMARY KEY (id, identifier, email))", keySpace, models.Collections.VerificationRequest)
69+
verificationRequestCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, jwt_token text, identifier text, expires_at bigint, email text, nonce text, redirect_uri text, created_at bigint, updated_at bigint, PRIMARY KEY (id, identifier, email))", KeySpace, models.Collections.VerificationRequest)
6770
err = session.Query(verificationRequestCollectionQuery).Exec()
6871
if err != nil {
6972
log.Println("Unable to create verification request collection:", err)

0 commit comments

Comments
 (0)