mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-17 06:09:53 +05:00
Start adding OrderBy Paramert for filterCDR
This commit is contained in:
committed by
Dan Christian Bogos
parent
ce76251554
commit
2765a24a06
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user