2021-07-12 23:52:16 +05:30
|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
2022-05-25 12:30:22 +05:30
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
2021-07-23 21:57:44 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
2022-01-21 12:18:07 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers"
|
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/arangodb"
|
2022-04-21 12:36:22 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/cassandradb"
|
2022-01-21 12:18:07 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/mongodb"
|
|
|
|
"github.com/authorizerdev/authorizer/server/db/providers/sql"
|
2022-05-27 23:20:38 +05:30
|
|
|
"github.com/authorizerdev/authorizer/server/memorystore"
|
2021-07-12 23:52:16 +05:30
|
|
|
)
|
|
|
|
|
2022-01-21 13:34:04 +05:30
|
|
|
// Provider returns the current database provider
|
|
|
|
var Provider providers.Provider
|
2021-07-12 23:52:16 +05:30
|
|
|
|
2022-02-26 10:06:26 +05:30
|
|
|
func InitDB() error {
|
2021-07-12 23:52:16 +05:30
|
|
|
var err error
|
2021-12-17 21:25:07 +05:30
|
|
|
|
2022-05-27 23:20:38 +05:30
|
|
|
envs := memorystore.RequiredEnvStoreObj.GetRequiredEnv()
|
|
|
|
|
2022-06-04 08:59:26 +05:30
|
|
|
isSQL := envs.DatabaseType != constants.DbTypeArangodb && envs.DatabaseType != constants.DbTypeMongodb && envs.DatabaseType != constants.DbTypeCassandraDB && envs.DatabaseType != constants.DbTypeScyllaDB
|
2022-05-27 23:20:38 +05:30
|
|
|
isArangoDB := envs.DatabaseType == constants.DbTypeArangodb
|
|
|
|
isMongoDB := envs.DatabaseType == constants.DbTypeMongodb
|
2022-06-04 08:59:26 +05:30
|
|
|
isCassandra := envs.DatabaseType == constants.DbTypeCassandraDB || envs.DatabaseType == constants.DbTypeScyllaDB
|
2021-07-12 23:52:16 +05:30
|
|
|
|
2022-01-21 13:34:04 +05:30
|
|
|
if isSQL {
|
2022-05-27 23:20:38 +05:30
|
|
|
log.Info("Initializing SQL Driver for: ", envs.DatabaseType)
|
2022-01-21 12:18:07 +05:30
|
|
|
Provider, err = sql.NewProvider()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatal("Failed to initialize SQL driver: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
return err
|
2022-01-21 12:18:07 +05:30
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-21 13:34:04 +05:30
|
|
|
if isArangoDB {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Info("Initializing ArangoDB Driver")
|
2022-01-21 12:18:07 +05:30
|
|
|
Provider, err = arangodb.NewProvider()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatal("Failed to initialize ArangoDB driver: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
return err
|
2022-01-21 12:18:07 +05:30
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-21 13:34:04 +05:30
|
|
|
if isMongoDB {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Info("Initializing MongoDB Driver")
|
2022-01-21 12:18:07 +05:30
|
|
|
Provider, err = mongodb.NewProvider()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatal("Failed to initialize MongoDB driver: ", err)
|
2022-02-26 10:06:26 +05:30
|
|
|
return err
|
2021-12-17 21:25:07 +05:30
|
|
|
}
|
|
|
|
}
|
2022-02-26 10:06:26 +05:30
|
|
|
|
2022-04-21 12:36:22 +05:30
|
|
|
if isCassandra {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Info("Initializing CassandraDB Driver")
|
2022-04-21 12:36:22 +05:30
|
|
|
Provider, err = cassandradb.NewProvider()
|
|
|
|
if err != nil {
|
2022-05-25 12:30:22 +05:30
|
|
|
log.Fatal("Failed to initialize CassandraDB driver: ", err)
|
2022-04-21 12:36:22 +05:30
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-02-26 10:06:26 +05:30
|
|
|
return nil
|
2021-07-12 23:52:16 +05:30
|
|
|
}
|