diff --git a/apier/v1/tpactiontriggers_it_test.go b/apier/v1/tpactiontriggers_it_test.go index 8640bcb1f..6b8076e98 100644 --- a/apier/v1/tpactiontriggers_it_test.go +++ b/apier/v1/tpactiontriggers_it_test.go @@ -92,9 +92,9 @@ func testTPActionTriggersInitCfg(t *testing.T) { config.SetCgrConfig(tpActionTriggerCfg) switch tpActionTriggerConfigDIR { case "tutmongo": // Mongo needs more time to reset db, need to investigate - tpActionDelay = 2000 + tpActionTriggerDelay = 2000 default: - tpActionDelay = 1000 + tpActionTriggerDelay = 1000 } } diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index d1df18f2b..74eeb5a50 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -72,6 +72,7 @@ const ( colCpp = "charger_profiles" colDpp = "dispatcher_profiles" colDph = "dispatcher_hosts" + colLID = "load_ids" ) var ( @@ -2189,3 +2190,37 @@ func (ms *MongoStorage) RemoveDispatcherHostDrv(tenant, id string) (err error) { return err }) } + +func (ms *MongoStorage) GetItemLoadIDsDrv(itemIDPrefix string) (loadIDs map[string]string, err error) { + fop := options.FindOne() + if itemIDPrefix != "" { + fop.SetProjection(bson.M{itemIDPrefix: 1, "_id": 0}) + } else { + fop.SetProjection(bson.M{"_id": 0}) + } + if err = ms.query(func(sctx mongo.SessionContext) (err error) { + cur := ms.getCol(colLID).FindOne(sctx, bson.D{}, fop) + if err := cur.Decode(&loadIDs); err != nil { + if err == mongo.ErrNoDocuments { + return utils.ErrNotFound + } + return err + } + return nil + }); err != nil { + return nil, err + } + if len(loadIDs) == 0 { + return nil, utils.ErrNotFound + } + return +} + +func (ms *MongoStorage) SetLoadIDsDrv(loadIDs map[string]string) (err error) { + return ms.query(func(sctx mongo.SessionContext) (err error) { + _, err = ms.getCol(colLID).UpdateOne(sctx, bson.D{}, bson.M{"$set": loadIDs}, + options.Update().SetUpsert(true), + ) + return err + }) +}