mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 05:09:54 +05:00
Add GetActions in DataManager
This commit is contained in:
committed by
Dan Christian Bogos
parent
d159bf48a6
commit
9f68b27b27
@@ -570,7 +570,7 @@ func (self *ApierV1) GetActions(actsId string, reply *[]*utils.TPAction) error {
|
||||
return fmt.Errorf("%s ActionsId: %s", utils.ErrMandatoryIeMissing.Error(), actsId)
|
||||
}
|
||||
acts := make([]*utils.TPAction, 0)
|
||||
engActs, err := self.DataManager.DataDB().GetActions(actsId, false, utils.NonTransactional)
|
||||
engActs, err := self.DataManager.GetActions(actsId, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
|
||||
@@ -267,7 +267,7 @@ func (self *ApierV2) GetActions(attr AttrGetActions, reply *map[string]engine.Ac
|
||||
retActions := make(map[string]engine.Actions)
|
||||
for _, accKey := range limitedActions {
|
||||
key := accKey[len(utils.ACTION_PREFIX):]
|
||||
acts, err := self.DataManager.DataDB().GetActions(key, false, utils.NonTransactional)
|
||||
acts, err := self.DataManager.GetActions(key, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
return utils.NewErrServerError(err)
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ func (at *ActionTiming) GetActionPlanID() string {
|
||||
|
||||
func (at *ActionTiming) getActions() (as []*Action, err error) {
|
||||
if at.actions == nil {
|
||||
at.actions, err = dm.DataDB().GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
at.actions, err = dm.GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
}
|
||||
at.actions.Sort()
|
||||
return at.actions, err
|
||||
|
||||
@@ -57,7 +57,7 @@ func (at *ActionTrigger) Execute(ub *Account, sq *CDRStatsQueueTriggered) (err e
|
||||
}
|
||||
// does NOT need to Lock() because it is triggered from a method that took the Lock
|
||||
var aac Actions
|
||||
aac, err = dm.DataDB().GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
aac, err = dm.GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("Failed to get actions: %v", err))
|
||||
return
|
||||
|
||||
@@ -1130,7 +1130,7 @@ func TestActionTriggerLogging(t *testing.T) {
|
||||
Weight: 10.0,
|
||||
ActionsID: "TEST_ACTIONS",
|
||||
}
|
||||
as, err := dm.DataDB().GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
as, err := dm.GetActions(at.ActionsID, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
t.Error("Error getting actions for the action timing: ", as, err)
|
||||
}
|
||||
@@ -2137,7 +2137,7 @@ func TestActionSetBalance(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestActionCSVFilter(t *testing.T) {
|
||||
act, err := dm.DataDB().GetActions("FILTER", false, utils.NonTransactional)
|
||||
act, err := dm.GetActions("FILTER", false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
t.Error("error getting actions: ", err)
|
||||
}
|
||||
@@ -2147,7 +2147,7 @@ func TestActionCSVFilter(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestActionExpirationTime(t *testing.T) {
|
||||
a, err := dm.DataDB().GetActions("EXP", false, utils.NonTransactional)
|
||||
a, err := dm.GetActions("EXP", false, utils.NonTransactional)
|
||||
if err != nil || a == nil {
|
||||
t.Error("Error getting actions: ", err)
|
||||
}
|
||||
@@ -2167,11 +2167,11 @@ func TestActionExpirationTime(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestActionExpNoExp(t *testing.T) {
|
||||
exp, err := dm.DataDB().GetActions("EXP", false, utils.NonTransactional)
|
||||
exp, err := dm.GetActions("EXP", false, utils.NonTransactional)
|
||||
if err != nil || exp == nil {
|
||||
t.Error("Error getting actions: ", err)
|
||||
}
|
||||
noexp, err := dm.DataDB().GetActions("NOEXP", false, utils.NonTransactional)
|
||||
noexp, err := dm.GetActions("NOEXP", false, utils.NonTransactional)
|
||||
if err != nil || noexp == nil {
|
||||
t.Error("Error getting actions: ", err)
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
|
||||
case utils.RATING_PROFILE_PREFIX:
|
||||
_, err = dm.DataDB().GetRatingProfile(dataID, true, utils.NonTransactional)
|
||||
case utils.ACTION_PREFIX:
|
||||
_, err = dm.DataDB().GetActions(dataID, true, utils.NonTransactional)
|
||||
_, err = dm.GetActions(dataID, true, utils.NonTransactional)
|
||||
case utils.ACTION_PLAN_PREFIX:
|
||||
_, err = dm.DataDB().GetActionPlan(dataID, true, utils.NonTransactional)
|
||||
case utils.AccountActionPlansPrefix:
|
||||
@@ -620,3 +620,28 @@ func (dm *DataManager) GetDerivedChargers(key string, skipCache bool, transactio
|
||||
cache.Set(cacheKey, dcs, cacheCommit(transactionID), transactionID)
|
||||
return
|
||||
}
|
||||
|
||||
func (dm *DataManager) GetActions(key string, skipCache bool, transactionID string) (as Actions, err error) {
|
||||
cachekey := utils.ACTION_PREFIX + key
|
||||
if !skipCache {
|
||||
if x, err := cache.GetCloned(cachekey); err != nil {
|
||||
if err.Error() != utils.ItemNotFound {
|
||||
return nil, err
|
||||
}
|
||||
} else if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
} else {
|
||||
return x.(Actions), nil
|
||||
}
|
||||
}
|
||||
as, err = dm.DataDB().GetActionsDrv(key)
|
||||
if err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
cache.Set(cachekey, nil, cacheCommit(transactionID), transactionID)
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
cache.Set(cachekey, as, cacheCommit(transactionID), transactionID)
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ func TestLoaderITLoadFromCSV(t *testing.T) {
|
||||
|
||||
func TestLoaderITWriteToDatabase(t *testing.T) {
|
||||
for k, as := range loader.actions {
|
||||
rcv, err := loader.dataStorage.GetActions(k, true, utils.NonTransactional)
|
||||
rcv, err := loader.dm.GetActions(k, true, utils.NonTransactional)
|
||||
if err != nil {
|
||||
t.Error("Failed GetActions: ", err.Error())
|
||||
}
|
||||
|
||||
@@ -1307,13 +1307,13 @@ func testOnStorITCRUDActions(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
if _, rcvErr := onStor.DataDB().GetActions(acts[0].Id, true, utils.NonTransactional); rcvErr != utils.ErrNotFound {
|
||||
if _, rcvErr := onStor.GetActions(acts[0].Id, true, utils.NonTransactional); rcvErr != utils.ErrNotFound {
|
||||
t.Error(rcvErr)
|
||||
}
|
||||
if err := onStor.DataDB().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if rcv, err := onStor.DataDB().GetActions(acts[0].Id, true, utils.NonTransactional); err != nil {
|
||||
if rcv, err := onStor.GetActions(acts[0].Id, true, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(acts[0], rcv[0]) {
|
||||
t.Errorf("Expecting: %v, received: %v", acts[0], rcv[0])
|
||||
@@ -1338,7 +1338,7 @@ func testOnStorITCRUDActions(t *testing.T) {
|
||||
if err := onStor.DataDB().RemoveActions(acts[0].Id, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, rcvErr := onStor.DataDB().GetActions(acts[0].Id, true, utils.NonTransactional); rcvErr != utils.ErrNotFound {
|
||||
if _, rcvErr := onStor.GetActions(acts[0].Id, true, utils.NonTransactional); rcvErr != utils.ErrNotFound {
|
||||
t.Error(rcvErr)
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ type DataDB interface {
|
||||
GetAllCdrStats() ([]*CdrStats, error)
|
||||
GetDerivedChargersDrv(string) (*utils.DerivedChargers, error)
|
||||
SetDerivedChargers(string, *utils.DerivedChargers, string) error
|
||||
GetActions(string, bool, string) (Actions, error)
|
||||
GetActionsDrv(string) (Actions, error)
|
||||
SetActions(string, Actions, string) error
|
||||
RemoveActions(string, string) error
|
||||
GetSharedGroupDrv(string) (*SharedGroup, error)
|
||||
|
||||
@@ -471,29 +471,15 @@ func (ms *MapStorage) UpdateReverseDestination(oldDest, newDest *Destination, tr
|
||||
return err
|
||||
}
|
||||
|
||||
func (ms *MapStorage) GetActions(key string, skipCache bool, transactionID string) (as Actions, err error) {
|
||||
func (ms *MapStorage) GetActionsDrv(key string) (as Actions, err error) {
|
||||
ms.mu.RLock()
|
||||
defer ms.mu.RUnlock()
|
||||
cCommit := cacheCommit(transactionID)
|
||||
cachekey := utils.ACTION_PREFIX + key
|
||||
if !skipCache {
|
||||
if x, err := cache.GetCloned(cachekey); err != nil {
|
||||
if err.Error() != utils.ItemNotFound {
|
||||
return nil, err
|
||||
}
|
||||
} else if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
} else {
|
||||
return x.(Actions), nil
|
||||
}
|
||||
}
|
||||
if values, ok := ms.dict[cachekey]; ok {
|
||||
err = ms.ms.Unmarshal(values, &as)
|
||||
} else {
|
||||
cache.Set(cachekey, nil, cCommit, transactionID)
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
cache.Set(cachekey, as, cCommit, transactionID)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -957,19 +957,7 @@ func (ms *MongoStorage) UpdateReverseDestination(oldDest, newDest *Destination,
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ms *MongoStorage) GetActions(key string, skipCache bool, transactionID string) (as Actions, err error) {
|
||||
cacheKey := utils.ACTION_PREFIX + key
|
||||
if !skipCache {
|
||||
if x, err := cache.GetCloned(cacheKey); err != nil {
|
||||
if err.Error() != utils.ItemNotFound {
|
||||
return nil, err
|
||||
}
|
||||
} else if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
} else {
|
||||
return x.(Actions), nil
|
||||
}
|
||||
}
|
||||
func (ms *MongoStorage) GetActionsDrv(key string) (as Actions, err error) {
|
||||
var result struct {
|
||||
Key string
|
||||
Value Actions
|
||||
@@ -978,13 +966,11 @@ func (ms *MongoStorage) GetActions(key string, skipCache bool, transactionID str
|
||||
defer session.Close()
|
||||
if err = col.Find(bson.M{"key": key}).One(&result); err != nil {
|
||||
if err == mgo.ErrNotFound {
|
||||
cache.Set(cacheKey, nil, cacheCommit(transactionID), transactionID)
|
||||
err = utils.ErrNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
as = result.Value
|
||||
cache.Set(utils.ACTION_PREFIX+key, as, cacheCommit(transactionID), transactionID)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -519,23 +519,11 @@ func (rs *RedisStorage) UpdateReverseDestination(oldDest, newDest *Destination,
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rs *RedisStorage) GetActions(key string, skipCache bool, transactionID string) (as Actions, err error) {
|
||||
func (rs *RedisStorage) GetActionsDrv(key string) (as Actions, err error) {
|
||||
key = utils.ACTION_PREFIX + key
|
||||
if !skipCache {
|
||||
if x, err := cache.GetCloned(key); err != nil {
|
||||
if err.Error() != utils.ItemNotFound {
|
||||
return nil, err
|
||||
}
|
||||
} else if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
} else {
|
||||
return x.(Actions), nil
|
||||
}
|
||||
}
|
||||
var values []byte
|
||||
if values, err = rs.Cmd("GET", key).Bytes(); err != nil {
|
||||
if err == redis.ErrRespNil { // did not find the destination
|
||||
cache.Set(key, nil, cacheCommit(transactionID), transactionID)
|
||||
err = utils.ErrNotFound
|
||||
}
|
||||
return
|
||||
@@ -543,7 +531,6 @@ func (rs *RedisStorage) GetActions(key string, skipCache bool, transactionID str
|
||||
if err = rs.ms.Unmarshal(values, &as); err != nil {
|
||||
return
|
||||
}
|
||||
cache.Set(key, as, cacheCommit(transactionID), transactionID)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user