2021-07-12 18:22:16 +00:00
|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
|
2021-07-23 16:27:44 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
2022-01-21 06:48:07 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers"
|
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/arangodb"
|
2022-01-24 13:23:53 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/faunadb"
|
2022-01-21 06:48:07 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/mongodb"
|
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/sql"
|
2022-01-17 06:02:13 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/envstore"
|
2021-07-12 18:22:16 +00:00
|
|
|
)
|
|
|
|
|
2022-01-21 08:04:04 +00:00
|
|
|
// Provider returns the current database provider
|
|
|
|
var Provider providers.Provider
|
2021-07-12 18:22:16 +00:00
|
|
|
|
2021-07-28 06:23:37 +00:00
|
|
|
func InitDB() {
|
2021-07-12 18:22:16 +00:00
|
|
|
var err error
|
2021-12-17 15:55:07 +00:00
|
|
|
|
2022-01-24 13:23:53 +00:00
|
|
|
isSQL := envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) != constants.DbTypeArangodb && envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) != constants.DbTypeMongodb && envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) != constants.DbTypeFaunadb
|
2022-01-21 08:04:04 +00:00
|
|
|
isArangoDB := envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) == constants.DbTypeArangodb
|
|
|
|
isMongoDB := envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) == constants.DbTypeMongodb
|
2022-01-24 13:23:53 +00:00
|
|
|
isFaunaDB := envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyDatabaseType) == constants.DbTypeFaunadb
|
2021-07-12 18:22:16 +00:00
|
|
|
|
2022-01-21 08:04:04 +00:00
|
|
|
if isSQL {
|
2022-01-21 06:48:07 +00:00
|
|
|
Provider, err = sql.NewProvider()
|
|
|
|
if err != nil {
|
2022-01-21 08:04:04 +00:00
|
|
|
log.Fatal("=> error setting sql provider:", err)
|
2022-01-21 06:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-21 08:04:04 +00:00
|
|
|
if isArangoDB {
|
2022-01-21 06:48:07 +00:00
|
|
|
Provider, err = arangodb.NewProvider()
|
|
|
|
if err != nil {
|
2022-01-21 08:04:04 +00:00
|
|
|
log.Fatal("=> error setting arangodb provider:", err)
|
2022-01-21 06:48:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-21 08:04:04 +00:00
|
|
|
if isMongoDB {
|
2022-01-21 06:48:07 +00:00
|
|
|
Provider, err = mongodb.NewProvider()
|
|
|
|
if err != nil {
|
2022-01-21 08:04:04 +00:00
|
|
|
log.Fatal("=> error setting arangodb provider:", err)
|
2021-12-17 15:55:07 +00:00
|
|
|
}
|
|
|
|
}
|
2022-01-24 13:23:53 +00:00
|
|
|
|
|
|
|
if isFaunaDB {
|
|
|
|
Provider, err = faunadb.NewProvider()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("=> error setting arangodb provider:", err)
|
|
|
|
}
|
|
|
|
}
|
2021-07-12 18:22:16 +00:00
|
|
|
}
|