added postgres configuration option to choose the schema(#4318)

This commit is contained in:
gezimbll
2024-04-16 06:06:14 -04:00
committed by Dan Christian Bogos
parent 863f837bd2
commit cf720b0618
10 changed files with 20 additions and 5 deletions

View File

@@ -28,7 +28,7 @@ import (
)
// NewPostgresStorage returns the posgres storDB
func NewPostgresStorage(host, port, name, user, password, sslmode string, maxConn, maxIdleConn int, connMaxLifetime time.Duration) (*SQLStorage, error) {
func NewPostgresStorage(host, port, name, user, password, sslmode, pgSchema string, maxConn, maxIdleConn int, connMaxLifetime time.Duration) (*SQLStorage, error) {
connectString := fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=%s", host, port, name, user, password, sslmode)
db, err := gorm.Open(postgres.Open(connectString), &gorm.Config{AllowGlobalUpdate: true})
if err != nil {
@@ -41,6 +41,9 @@ func NewPostgresStorage(host, port, name, user, password, sslmode string, maxCon
if err = postgressStorage.Db.Ping(); err != nil {
return nil, err
}
if pgSchema != "" {
postgressStorage.Db.Exec(fmt.Sprintf("set search_path='%s'", pgSchema))
}
postgressStorage.Db.SetMaxIdleConns(maxIdleConn)
postgressStorage.Db.SetMaxOpenConns(maxConn)
postgressStorage.Db.SetConnMaxLifetime(connMaxLifetime)

View File

@@ -67,7 +67,7 @@ func NewStorDBConn(dbType, host, port, name, user, pass, marshaler string,
case utils.MetaMongo:
db, err = NewMongoStorage(opts.MongoConnScheme, host, port, name, user, pass, marshaler, utils.StorDB, stringIndexedFields, opts.MongoQueryTimeout)
case utils.MetaPostgres:
db, err = NewPostgresStorage(host, port, name, user, pass, opts.PgSSLMode,
db, err = NewPostgresStorage(host, port, name, user, pass, opts.PgSSLMode, opts.PgSchema,
opts.SQLMaxOpenConns, opts.SQLMaxIdleConns, opts.SQLConnMaxLifetime)
case utils.MetaMySQL:
db, err = NewMySQLStorage(host, port, name, user, pass, opts.SQLMaxOpenConns, opts.SQLMaxIdleConns,

View File

@@ -108,7 +108,7 @@ func TestStorDBit(t *testing.T) {
if storDB, err = NewPostgresStorage(storDBCfg.StorDbCfg().Host,
storDBCfg.StorDbCfg().Port, storDBCfg.StorDbCfg().Name,
storDBCfg.StorDbCfg().User, storDBCfg.StorDbCfg().Password,
storDBCfg.StorDbCfg().Opts.PgSSLMode, 100, 10, 0); err != nil {
storDBCfg.StorDbCfg().Opts.PgSSLMode, storDBCfg.StorDbCfg().Opts.PgSchema, 100, 10, 0); err != nil {
t.Fatal(err)
}
storDB.(*SQLStorage).db.Config.Logger = logger.Default.LogMode(logger.Silent)