Fix paginator conversion between CDR filters, paginator tests for both mysql and postgres

This commit is contained in:
DanB
2015-03-02 19:00:31 +01:00
parent d3b3794770
commit 4963c70b48
3 changed files with 43 additions and 4 deletions

View File

@@ -574,6 +574,24 @@ func TestMySQLGetStoredCdrs(t *testing.T) {
} else if count != 8 {
t.Error("Unexpected count of StoredCdrs returned: ", count)
}
// Limit 5
if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(5), Offset: utils.IntPointer(0)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 5 {
t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs)
}
// Offset 5
if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(5), Offset: utils.IntPointer(0)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 5 {
t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs)
}
// Offset with limit 2
if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(2), Offset: utils.IntPointer(5)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 2 {
t.Error("Unexpected number of StoredCdrs returned: ", len(storedCdrs))
}
// Filter on cgrids
if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}}); err != nil {

View File

@@ -576,6 +576,24 @@ func TestPSQLGetStoredCdrs(t *testing.T) {
} else if count != 8 {
t.Error("Unexpected count of StoredCdrs returned: ", count)
}
// Limit 5
if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(5), Offset: utils.IntPointer(0)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 5 {
t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs)
}
// Offset 5
if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(5), Offset: utils.IntPointer(0)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 5 {
t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs)
}
// Offset with limit 2
if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{Paginator: utils.Paginator{Limit: utils.IntPointer(2), Offset: utils.IntPointer(5)}}); err != nil {
t.Error(err.Error())
} else if len(storedCdrs) != 2 {
t.Error("Unexpected number of StoredCdrs returned: ", len(storedCdrs))
}
// Filter on cgrids
if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()),
utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}}); err != nil {

View File

@@ -33,11 +33,11 @@ func (tpdi TPDistinctIds) String() string {
return strings.Join(tpdi, ",")
}
// To paginate stuff from stordb (e.g. ids)
// Paginate stuff around items returned
type Paginator struct {
Limit *int
Offset *int
SearchTerm string
Limit *int // Limit the number of items returned
Offset *int // Offset of the first item returned (eg: use Limit*Page in case of PerPage items)
SearchTerm string // Global matching pattern in items returned, partially used in some APIs
}
/*func (pag *Paginator) GetLimits() (low, high int) {
@@ -691,6 +691,7 @@ type AttrExpFileCdrs struct {
SkipErrors bool // Do not export errored CDRs
SkipRated bool // Do not export rated CDRs
SuppressCgrIds bool // Disable CgrIds reporting in reply/ExportedCgrIds and reply/UnexportedCgrIds
Paginator
}
func (self *AttrExpFileCdrs) AsCdrsFilter() (*CdrsFilter, error) {
@@ -711,6 +712,7 @@ func (self *AttrExpFileCdrs) AsCdrsFilter() (*CdrsFilter, error) {
RatedSubjects: self.RatedSubjects,
OrderIdStart: self.OrderIdStart,
OrderIdEnd: self.OrderIdEnd,
Paginator: self.Paginator,
}
if len(self.TimeStart) != 0 {
if answerTimeStart, err := ParseTimeDetectLayout(self.TimeStart); err != nil {
@@ -786,6 +788,7 @@ func (self *AttrGetCdrs) AsCdrsFilter() (*CdrsFilter, error) {
RatedSubjects: self.RatedSubjects,
OrderIdStart: self.OrderIdStart,
OrderIdEnd: self.OrderIdEnd,
Paginator: self.Paginator,
}
if len(self.TimeStart) != 0 {
if answerTimeStart, err := ParseTimeDetectLayout(self.TimeStart); err != nil {