Start adding OrderBy Paramert for filterCDR

This commit is contained in:
TeoV
2018-08-31 10:34:49 -04:00
committed by Dan Christian Bogos
parent ce76251554
commit 2765a24a06
4 changed files with 22 additions and 1 deletions

View File

@@ -753,6 +753,13 @@ func testGetCDRs(cfg *config.CGRConfig) error {
} else if len(CDRs) != 7 {
return fmt.Errorf("testGetCDRs #94, unexpected number of CDRs returned: %+v", len(CDRs))
}
// Filter OrderBy
// if CDRs, _, err := cdrStorage.GetCDRs(&utils.CDRsFilter{MinUsage: "12s", OrderBy: "orderid"}, false); err != nil {
// return fmt.Errorf("testGetCDRs #95, err: %v", err)
// } else {
// for _, cdr := range CDRs {
// }
// }
return nil
}

View File

@@ -1119,6 +1119,11 @@ func (ms *MongoStorage) GetCDRs(qryFltr *utils.CDRsFilter, remove bool) ([]*CDR,
if qryFltr.Paginator.Offset != nil {
q = q.Skip(*qryFltr.Paginator.Offset)
}
// need to check if it's descencent
// after that make a switch to make the parameter compatible
if qryFltr.OrderBy != "" {
q = q.Sort(qryFltr.OrderBy)
}
if qryFltr.Count {
cnt, err := q.Count()
if err != nil {

View File

@@ -1042,6 +1042,11 @@ func (self *SQLStorage) GetCDRs(qryFltr *utils.CDRsFilter, remove bool) ([]*CDR,
if qryFltr.UpdatedAtEnd != nil && !qryFltr.UpdatedAtEnd.IsZero() {
q = q.Where("updated_at < ?", qryFltr.UpdatedAtEnd)
}
// need to check if it's descencent
// after that make a switch to make the parameter compatible
if qryFltr.OrderBy != "" {
q = q.Order(qryFltr.OrderBy)
}
if len(qryFltr.MinUsage) != 0 {
minUsage, err := utils.ParseDurationWithNanosecs(qryFltr.MinUsage)
if err != nil {

View File

@@ -849,6 +849,7 @@ type AttrGetCdrs struct {
TimeEnd string // If provided, it will represent the end of the CDRs interval (<)
SkipErrors bool // Do not export errored CDRs
SkipRated bool // Do not export rated CDRs
OrderBy string // Ascendent/Descendent
Paginator
}
@@ -868,6 +869,7 @@ func (self *AttrGetCdrs) AsCDRsFilter(timezone string) (*CDRsFilter, error) {
OrderIDStart: self.OrderIdStart,
OrderIDEnd: self.OrderIdEnd,
Paginator: self.Paginator,
OrderBy: self.OrderBy,
}
if len(self.TimeStart) != 0 {
if answerTimeStart, err := ParseTimeDetectLayout(self.TimeStart, timezone); err != nil {
@@ -1067,8 +1069,8 @@ type CDRsFilter struct {
MaxCost *float64 // End of the usage interval (<)
Unscoped bool // Include soft-deleted records in results
Count bool // If true count the items instead of returning data
OrderBy string // Can be ordered by OrderID,AnswerTime,SetupTime,Cost,Usage
Paginator
//OrderBy asc/desc
}
// RPCCDRsFilter is a filter used in Rpc calls
@@ -1116,6 +1118,7 @@ type RPCCDRsFilter struct {
MaxUsage string // End of the usage interval (<)
MinCost *float64 // Start of the cost interval (>=)
MaxCost *float64 // End of the usage interval (<)
OrderBy string // Ascendent/Descendent
Paginator // Add pagination
}
@@ -1156,6 +1159,7 @@ func (self *RPCCDRsFilter) AsCDRsFilter(timezone string) (*CDRsFilter, error) {
MinCost: self.MinCost,
MaxCost: self.MaxCost,
Paginator: self.Paginator,
OrderBy: self.OrderBy,
}
if len(self.SetupTimeStart) != 0 {
if sTimeStart, err := ParseTimeDetectLayout(self.SetupTimeStart, timezone); err != nil {