Skip to content

Commit 39c2c36

Browse files
committed
feat: add support for db username, password, host, port
1 parent 961f227 commit 39c2c36

File tree

11 files changed

+273
-31
lines changed

11 files changed

+273
-31
lines changed

server/constants/env.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ const (
3030
EnvKeyDatabaseURL = "DATABASE_URL"
3131
// EnvKeyDatabaseName key for env variable DATABASE_NAME
3232
EnvKeyDatabaseName = "DATABASE_NAME"
33+
// EnvKeyDatabaseUsername key for env variable DATABASE_USERNAME
34+
EnvKeyDatabaseUsername = "DATABASE_USERNAME"
35+
// EnvKeyDatabasePassword key for env variable DATABASE_PASSWORD
36+
EnvKeyDatabasePassword = "DATABASE_PASSWORD"
37+
// EnvKeyDatabasePort key for env variable DATABASE_PORT
38+
EnvKeyDatabasePort = "DATABASE_PORT"
39+
// EnvKeyDatabaseHost key for env variable DATABASE_HOST
40+
EnvKeyDatabaseHost = "DATABASE_HOST"
3341
// EnvKeySmtpHost key for env variable SMTP_HOST
3442
EnvKeySmtpHost = "SMTP_HOST"
3543
// EnvKeySmtpPort key for env variable SMTP_PORT

server/db/providers/cassandradb/provider.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cassandradb
33
import (
44
"fmt"
55
"log"
6+
"strings"
67

78
"github.com/authorizerdev/authorizer/server/constants"
89
"github.com/authorizerdev/authorizer/server/db/models"
@@ -21,7 +22,19 @@ var KeySpace string
2122
func NewProvider() (*provider, error) {
2223
dbURL := envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseURL)
2324
KeySpace = envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseName)
24-
cassandraClient := cansandraDriver.NewCluster(dbURL)
25+
clusterURL := []string{}
26+
if strings.Contains(dbURL, ",") {
27+
clusterURL = strings.Split(dbURL, ",")
28+
} else {
29+
clusterURL = append(clusterURL, dbURL)
30+
}
31+
cassandraClient := cansandraDriver.NewCluster(clusterURL...)
32+
if envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseUsername) != "" && envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabasePassword) != "" {
33+
cassandraClient.Authenticator = &cansandraDriver.PasswordAuthenticator{
34+
Username: envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseUsername),
35+
Password: envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabasePassword),
36+
}
37+
}
2538

2639
cassandraClient.RetryPolicy = &cansandraDriver.SimpleRetryPolicy{
2740
NumRetries: 3,

server/env/env.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ func InitRequiredEnv() error {
3838
dbURL := os.Getenv(constants.EnvKeyDatabaseURL)
3939
dbType := os.Getenv(constants.EnvKeyDatabaseType)
4040
dbName := os.Getenv(constants.EnvKeyDatabaseName)
41+
dbPort := os.Getenv(constants.EnvKeyDatabasePort)
42+
dbHost := os.Getenv(constants.EnvKeyDatabaseHost)
43+
dbUsername := os.Getenv(constants.EnvKeyDatabaseUsername)
44+
dbPassword := os.Getenv(constants.EnvKeyDatabasePassword)
4145

4246
if strings.TrimSpace(dbType) == "" {
4347
if envstore.ARG_DB_TYPE != nil && *envstore.ARG_DB_TYPE != "" {
@@ -54,7 +58,7 @@ func InitRequiredEnv() error {
5458
dbURL = strings.TrimSpace(*envstore.ARG_DB_URL)
5559
}
5660

57-
if dbURL == "" {
61+
if dbURL == "" && dbPort == "" && dbHost == "" && dbUsername == "" && dbPassword == "" {
5862
return errors.New("invalid database url. DATABASE_URL is required")
5963
}
6064
}
@@ -69,6 +73,10 @@ func InitRequiredEnv() error {
6973
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseURL, dbURL)
7074
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseType, dbType)
7175
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseName, dbName)
76+
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseHost, dbHost)
77+
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabasePort, dbPort)
78+
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseUsername, dbUsername)
79+
envstore.EnvStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabasePassword, dbPassword)
7280
return nil
7381
}
7482

server/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/gin-gonic/gin v1.7.2
1010
github.com/go-playground/validator/v10 v10.8.0 // indirect
1111
github.com/go-redis/redis/v8 v8.11.0
12-
github.com/gocql/gocql v1.0.0 // indirect
12+
github.com/gocql/gocql v1.0.0
1313
github.com/golang-jwt/jwt v3.2.2+incompatible
1414
github.com/golang/protobuf v1.5.2 // indirect
1515
github.com/google/uuid v1.3.0

server/go.sum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e h1:Xg+hGrY2
4848
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:mq7Shfa/CaixoDxiyAAc5jZ6CVBAyPaNQCGS7mkj4Ho=
4949
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
5050
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
51+
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY=
5152
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
53+
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
5254
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
5355
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
5456
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
@@ -144,7 +146,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
144146
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
145147
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
146148
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
147-
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
148149
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
149150
github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
150151
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=

server/graph/generated/generated.go

Lines changed: 196 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/model/models_gen.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/schema.graphqls

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ type Env {
9292
DATABASE_NAME: String!
9393
DATABASE_URL: String!
9494
DATABASE_TYPE: String!
95+
DATABASE_USERNAME: String!
96+
DATABASE_PASSWORD: String!
97+
DATABASE_HOST: String!
98+
DATABASE_PORT: String!
9599
CLIENT_ID: String!
96100
CLIENT_SECRET: String!
97101
CUSTOM_ACCESS_TOKEN_SCRIPT: String

server/resolvers/env.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ func EnvResolver(ctx context.Context) (*model.Env, error) {
3434
databaseURL := store.StringEnv[constants.EnvKeyDatabaseURL]
3535
databaseName := store.StringEnv[constants.EnvKeyDatabaseName]
3636
databaseType := store.StringEnv[constants.EnvKeyDatabaseType]
37+
databaseUsername := store.StringEnv[constants.EnvKeyDatabaseUsername]
38+
databasePassword := store.StringEnv[constants.EnvKeyDatabasePassword]
39+
databaseHost := store.StringEnv[constants.EnvKeyDatabaseHost]
40+
databasePort := store.StringEnv[constants.EnvKeyDatabasePort]
3741
customAccessTokenScript := store.StringEnv[constants.EnvKeyCustomAccessTokenScript]
3842
smtpHost := store.StringEnv[constants.EnvKeySmtpHost]
3943
smtpPort := store.StringEnv[constants.EnvKeySmtpPort]
@@ -77,6 +81,10 @@ func EnvResolver(ctx context.Context) (*model.Env, error) {
7781
DatabaseName: databaseName,
7882
DatabaseURL: databaseURL,
7983
DatabaseType: databaseType,
84+
DatabaseUsername: databaseUsername,
85+
DatabasePassword: databasePassword,
86+
DatabaseHost: databaseHost,
87+
DatabasePort: databasePort,
8088
ClientID: clientID,
8189
ClientSecret: clientSecret,
8290
CustomAccessTokenScript: &customAccessTokenScript,

0 commit comments

Comments
 (0)