mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 06:38:45 +05:00
DataManager.GetFilterIndexes with cacheID and itemIDPrefix, utils.CachePrefixToInstance, utils.PrefixToRevIndexCache
This commit is contained in:
@@ -26,8 +26,10 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
NAT = &Destination{Id: "NAT", Prefixes: []string{"0257", "0256", "0723"}}
|
||||
RET = &Destination{Id: "RET", Prefixes: []string{"0723", "0724"}}
|
||||
NAT = &Destination{Id: "NAT",
|
||||
Prefixes: []string{"0257", "0256", "0723"}}
|
||||
RET = &Destination{Id: "RET",
|
||||
Prefixes: []string{"0723", "0724"}}
|
||||
)
|
||||
|
||||
func TestBalanceStoreRestore(t *testing.T) {
|
||||
|
||||
@@ -519,9 +519,8 @@ func TestAttributeIndexer(t *testing.T) {
|
||||
}
|
||||
rfi1 := NewFilterIndexer(dmAtr, utils.AttributeProfilePrefix,
|
||||
utils.ConcatenatedKey(attrPrf.Tenant, utils.META_ANY))
|
||||
if rcvIdx, err := dmAtr.GetFilterIndexes(
|
||||
GetDBIndexKey(rfi1.itemType, rfi1.dbKeySuffix, false), MetaString,
|
||||
nil); err != nil {
|
||||
if rcvIdx, err := dmAtr.GetFilterIndexes(utils.PrefixToIndexCache[rfi1.itemType],
|
||||
rfi1.dbKeySuffix, MetaString, nil); err != nil {
|
||||
t.Error(err)
|
||||
} else {
|
||||
if !reflect.DeepEqual(eIdxes, rcvIdx) {
|
||||
@@ -544,9 +543,8 @@ func TestAttributeIndexer(t *testing.T) {
|
||||
}
|
||||
rfi2 := NewFilterIndexer(dmAtr, utils.AttributeProfilePrefix,
|
||||
utils.ConcatenatedKey(attrPrf.Tenant, utils.MetaSessionS))
|
||||
if rcvIdx, err := dmAtr.GetFilterIndexes(
|
||||
GetDBIndexKey(rfi2.itemType, rfi2.dbKeySuffix, false), MetaString,
|
||||
nil); err != nil {
|
||||
if rcvIdx, err := dmAtr.GetFilterIndexes(utils.PrefixToIndexCache[rfi2.itemType],
|
||||
rfi2.dbKeySuffix, MetaString, nil); err != nil {
|
||||
t.Error(err)
|
||||
} else {
|
||||
if !reflect.DeepEqual(eIdxes, rcvIdx) {
|
||||
@@ -563,9 +561,8 @@ func TestAttributeIndexer(t *testing.T) {
|
||||
}
|
||||
}
|
||||
//verify if old index was deleted ( context *any)
|
||||
if _, err := dmAtr.GetFilterIndexes(
|
||||
GetDBIndexKey(rfi1.itemType, rfi1.dbKeySuffix, false), MetaString,
|
||||
nil); err != utils.ErrNotFound {
|
||||
if _, err := dmAtr.GetFilterIndexes(utils.PrefixToIndexCache[rfi1.itemType],
|
||||
rfi1.dbKeySuffix, MetaString, nil); err != utils.ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := dmAtr.GetFilterReverseIndexes(
|
||||
|
||||
@@ -1107,8 +1107,9 @@ func (dm *DataManager) HasData(category, subject, tenant string) (has bool, err
|
||||
return dm.DataDB().HasDataDrv(category, subject, tenant)
|
||||
}
|
||||
|
||||
func (dm *DataManager) GetFilterIndexes(dbKey, filterType string, fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) {
|
||||
return dm.DataDB().GetFilterIndexesDrv(dbKey, filterType, fldNameVal)
|
||||
func (dm *DataManager) GetFilterIndexes(cacheID, itemIDPrefix, filterType string,
|
||||
fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) {
|
||||
return dm.DataDB().GetFilterIndexesDrv(cacheID, itemIDPrefix, filterType, fldNameVal)
|
||||
}
|
||||
|
||||
func (dm *DataManager) SetFilterIndexes(dbKey string, indexes map[string]utils.StringMap, commit bool, transactionID string) (err error) {
|
||||
|
||||
@@ -159,7 +159,7 @@ func (rfi *FilterIndexer) loadItemReverseIndex(filterType, itemID string) (err e
|
||||
//Populate FilterIndexer.indexes with specific fieldName:fieldValue , item
|
||||
func (rfi *FilterIndexer) loadFldNameFldValIndex(filterType, fldName, fldVal string) error {
|
||||
rcvIdx, err := rfi.dm.GetFilterIndexes(
|
||||
GetDBIndexKey(rfi.itemType, rfi.dbKeySuffix, false), filterType,
|
||||
utils.PrefixToIndexCache[rfi.itemType], rfi.dbKeySuffix, filterType,
|
||||
map[string]string{fldName: fldVal})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -255,6 +255,8 @@ func (rs Resources) allocateResource(ru *ResourceUsage, dryRun bool) (alcMessage
|
||||
r.removeExpiredUnits()
|
||||
if _, hasID := r.Usages[ru.ID]; hasID { // update
|
||||
r.clearUsage(ru.ID)
|
||||
if r.rPrf == nil {
|
||||
return "", fmt.Errorf("empty configuration for resourceID: %s", r.TenantID())
|
||||
}
|
||||
if r.rPrf.Limit >= r.totalUsage()+ru.Units {
|
||||
if alcMessage == "" {
|
||||
|
||||
@@ -118,7 +118,7 @@ type DataDB interface {
|
||||
RemoveTimingDrv(string) error
|
||||
GetLoadHistory(int, bool, string) ([]*utils.LoadInstance, error)
|
||||
AddLoadHistory(*utils.LoadInstance, int, string) error
|
||||
GetFilterIndexesDrv(dbKey, filterType string,
|
||||
GetFilterIndexesDrv(cacheID, itemIDPrefix, filterType string,
|
||||
fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error)
|
||||
SetFilterIndexesDrv(dbKey string, indexes map[string]utils.StringMap,
|
||||
commit bool, transactionID string) (err error)
|
||||
|
||||
@@ -1231,18 +1231,18 @@ func (ms *MapStorage) RemoveTimingDrv(id string) error {
|
||||
}
|
||||
|
||||
//GetFilterIndexesDrv retrieves Indexes from dataDB
|
||||
func (ms *MapStorage) GetFilterIndexesDrv(dbKey, filterType string,
|
||||
func (ms *MapStorage) GetFilterIndexesDrv(cacheID, itemIDPrefix, filterType string,
|
||||
fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) {
|
||||
ms.mu.RLock()
|
||||
defer ms.mu.RUnlock()
|
||||
dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix
|
||||
values, ok := ms.dict[dbKey]
|
||||
if !ok {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
if len(fldNameVal) != 0 {
|
||||
rcvidx := make(map[string]utils.StringMap)
|
||||
err = ms.ms.Unmarshal(values, &rcvidx)
|
||||
if err != nil {
|
||||
if err = ms.ms.Unmarshal(values, &rcvidx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
indexes = make(map[string]utils.StringMap)
|
||||
@@ -1256,8 +1256,7 @@ func (ms *MapStorage) GetFilterIndexesDrv(dbKey, filterType string,
|
||||
}
|
||||
return
|
||||
} else {
|
||||
err = ms.ms.Unmarshal(values, &indexes)
|
||||
if err != nil {
|
||||
if err = ms.ms.Unmarshal(values, &indexes); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(indexes) == 0 {
|
||||
|
||||
@@ -1934,7 +1934,7 @@ func (ms *MongoStorage) RemoveTimingDrv(id string) (err error) {
|
||||
}
|
||||
|
||||
// GetFilterIndexesDrv retrieves Indexes from dataDB
|
||||
func (ms *MongoStorage) GetFilterIndexesDrv(dbKey, filterType string,
|
||||
func (ms *MongoStorage) GetFilterIndexesDrv(cacheID, itemIDPrefix, filterType string,
|
||||
fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) {
|
||||
session, col := ms.conn(colRFI)
|
||||
defer session.Close()
|
||||
@@ -1942,10 +1942,12 @@ func (ms *MongoStorage) GetFilterIndexesDrv(dbKey, filterType string,
|
||||
Key string
|
||||
Value map[string][]string
|
||||
}
|
||||
dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix
|
||||
findParam := bson.M{"key": dbKey}
|
||||
if len(fldNameVal) != 0 {
|
||||
for fldName, fldValue := range fldNameVal {
|
||||
qryFltr := fmt.Sprintf("value.%s", utils.ConcatenatedKey(filterType, fldName, fldValue))
|
||||
qryFltr := fmt.Sprintf("value.%s",
|
||||
utils.ConcatenatedKey(filterType, fldName, fldValue))
|
||||
if err = col.Find(bson.M{"key": dbKey, qryFltr: bson.M{"$exists": true}}).Select(
|
||||
bson.M{qryFltr: true}).One(&result); err != nil {
|
||||
if err == mgo.ErrNotFound {
|
||||
|
||||
@@ -1369,9 +1369,10 @@ func (rs *RedisStorage) RemoveTimingDrv(id string) (err error) {
|
||||
}
|
||||
|
||||
//GetFilterIndexesDrv retrieves Indexes from dataDB
|
||||
func (rs *RedisStorage) GetFilterIndexesDrv(dbKey, filterType string,
|
||||
func (rs *RedisStorage) GetFilterIndexesDrv(cacheID, itemIDPrefix, filterType string,
|
||||
fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) {
|
||||
mp := make(map[string]string)
|
||||
dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix
|
||||
if len(fldNameVal) == 0 {
|
||||
mp, err = rs.Cmd("HGETALL", dbKey).Map()
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user