diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 351f42ab3..67079ee82 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -111,7 +111,7 @@ func NewMongoStorage(host, port, db, user, pass, mrshlerStr string, cdrsIndexes isDataDB: isDataDB, counter: utils.NewCounter(time.Now().UnixNano(), 0), } - uri := composeURI("mongodb", host, port, db, user, pass) + uri := composeMongoURI("mongodb", host, port, db, user, pass) mongoStorage.ctxTTL = config.CgrConfig().DataDbCfg().QueryTimeout if !isDataDB { mongoStorage.ctxTTL = config.CgrConfig().StorDbCfg().QueryTimeout diff --git a/engine/storage_test.go b/engine/storage_test.go index 120b61aa4..e364de083 100644 --- a/engine/storage_test.go +++ b/engine/storage_test.go @@ -1809,7 +1809,7 @@ func TestComposeURI(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - url := composeURI(tt.scheme, tt.host, tt.port, tt.db, tt.user, tt.pass) + url := composeMongoURI(tt.scheme, tt.host, tt.port, tt.db, tt.user, tt.pass) if url != tt.expected { t.Errorf("expected %v,\nreceived %v", tt.expected, url) } diff --git a/engine/storage_utils.go b/engine/storage_utils.go index 9d5cffad7..2b63ef76d 100644 --- a/engine/storage_utils.go +++ b/engine/storage_utils.go @@ -78,7 +78,16 @@ func NewStorDBConn(dbType, host, port, name, user, pass, marshaler, sslmode stri return } -func composeURI(scheme, host, port, db, user, pass string) string { +// composeMongoURI constructs a MongoDB URI from the given parameters: +// - scheme: only "mongodb" for now. +// - host: MongoDB server host (e.g., "localhost"). +// - port: MongoDB server port, excluded if "0". +// - db: Database name, may include additional parameters (e.g., "db?retryWrites=true"). +// - user: Username for auth, omitted if empty. +// - pass: Password for auth, only if username is set. +// +// TODO: Should probably remove scheme parameter, as only "mongodb" is supported. +func composeMongoURI(scheme, host, port, db, user, pass string) string { uri := scheme + "://" if user != "" && pass != "" { uri += user + ":" + pass + "@"