From fe8db890b0c50ef21018bf9d62bcdad0bd1f5e50 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Fri, 27 Mar 2020 18:35:45 +0100 Subject: [PATCH] Add support for limit/offset --- compose/repository/record.go | 3 +-- compose/rest/attachment.go | 2 +- compose/rest/chart.go | 2 +- compose/rest/module.go | 2 +- compose/rest/namespace.go | 2 +- compose/rest/page.go | 2 +- compose/rest/record.go | 2 +- pkg/rh/paging.go | 19 ++++++++++++------- system/rest/application.go | 2 +- system/rest/reminder.go | 2 +- system/rest/role.go | 2 +- system/rest/user.go | 2 +- 12 files changed, 23 insertions(+), 19 deletions(-) diff --git a/compose/repository/record.go b/compose/repository/record.go index 57ad62417..5f1491767 100644 --- a/compose/repository/record.go +++ b/compose/repository/record.go @@ -144,8 +144,7 @@ func (r record) Find(module *types.Module, filter types.RecordFilter) (set types // // @todo optimize and include value loading func (r record) Export(module *types.Module, filter types.RecordFilter) (set types.RecordSet, err error) { - filter.PerPage = 0 - filter.Page = 0 + filter.PageFilter = rh.PageFilter{} query, err := r.buildQuery(module, filter) if err != nil { diff --git a/compose/rest/attachment.go b/compose/rest/attachment.go index ba3521598..275be2c76 100644 --- a/compose/rest/attachment.go +++ b/compose/rest/attachment.go @@ -54,7 +54,7 @@ func (ctrl Attachment) List(ctx context.Context, r *request.AttachmentList) (int RecordID: r.RecordID, FieldName: r.FieldName, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.attachment.With(ctx).Find(f) diff --git a/compose/rest/chart.go b/compose/rest/chart.go index 914e66c7d..cf05e225d 100644 --- a/compose/rest/chart.go +++ b/compose/rest/chart.go @@ -58,7 +58,7 @@ func (ctrl Chart) List(ctx context.Context, r *request.ChartList) (interface{}, Sort: r.Sort, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.chart.With(ctx).Find(f) diff --git a/compose/rest/module.go b/compose/rest/module.go index b2462b671..5257fcf20 100644 --- a/compose/rest/module.go +++ b/compose/rest/module.go @@ -81,7 +81,7 @@ func (ctrl *Module) List(ctx context.Context, r *request.ModuleList) (interface{ Handle: r.Handle, Sort: r.Sort, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.module.With(ctx).Find(f) diff --git a/compose/rest/namespace.go b/compose/rest/namespace.go index 5f37a958a..e934efda0 100644 --- a/compose/rest/namespace.go +++ b/compose/rest/namespace.go @@ -63,7 +63,7 @@ func (ctrl Namespace) List(ctx context.Context, r *request.NamespaceList) (inter Sort: r.Sort, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.namespace.With(ctx).Find(f) diff --git a/compose/rest/page.go b/compose/rest/page.go index cc2082c9c..25e292e95 100644 --- a/compose/rest/page.go +++ b/compose/rest/page.go @@ -64,7 +64,7 @@ func (ctrl *Page) List(ctx context.Context, r *request.PageList) (interface{}, e Sort: r.Sort, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.page.With(ctx).Find(f) diff --git a/compose/rest/record.go b/compose/rest/record.go index ee8f27dd6..f18bee854 100644 --- a/compose/rest/record.go +++ b/compose/rest/record.go @@ -88,7 +88,7 @@ func (ctrl *Record) List(ctx context.Context, r *request.RecordList) (interface{ Filter: r.Filter, Sort: r.Sort, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), }) return ctrl.makeFilterPayload(ctx, m, rr, filter, err) diff --git a/pkg/rh/paging.go b/pkg/rh/paging.go index fc4944d23..ecc49b2ad 100644 --- a/pkg/rh/paging.go +++ b/pkg/rh/paging.go @@ -28,16 +28,21 @@ type ( // with the response Count uint `json:"count"` } + + paginationParams interface { + GetLimit() uint + GetOffset() uint + GetPage() uint + GetPerPage() uint + } ) -func Paging(page, perPage uint) PageFilter { - if page == 0 { - page = 1 - } - +func Paging(p paginationParams) PageFilter { return PageFilter{ - Page: page, - PerPage: perPage, + Limit: p.GetLimit(), + Offset: p.GetOffset(), + Page: p.GetPage(), + PerPage: p.GetPerPage(), } } diff --git a/system/rest/application.go b/system/rest/application.go index 98d5dcb3a..2309d75df 100644 --- a/system/rest/application.go +++ b/system/rest/application.go @@ -59,7 +59,7 @@ func (ctrl *Application) List(ctx context.Context, r *request.ApplicationList) ( Deleted: rh.FilterState(r.Deleted), Sort: rh.NormalizeSortColumns(r.Sort), - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.application.With(ctx).Find(f) diff --git a/system/rest/reminder.go b/system/rest/reminder.go index 7284a44ac..0f756b268 100644 --- a/system/rest/reminder.go +++ b/system/rest/reminder.go @@ -46,7 +46,7 @@ func (ctrl *Reminder) List(ctx context.Context, r *request.ReminderList) (interf ExcludeDismissed: r.ExcludeDismissed, ScheduledOnly: r.ScheduledOnly, - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.reminder.Find(ctx, f) diff --git a/system/rest/role.go b/system/rest/role.go index c36111e46..462789da3 100644 --- a/system/rest/role.go +++ b/system/rest/role.go @@ -64,7 +64,7 @@ func (ctrl Role) List(ctx context.Context, r *request.RoleList) (interface{}, er Deleted: rh.FilterState(r.Deleted), Sort: rh.NormalizeSortColumns(r.Sort), - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } set, filter, err := ctrl.role.With(ctx).Find(f) diff --git a/system/rest/user.go b/system/rest/user.go index 425da1590..28e583218 100644 --- a/system/rest/user.go +++ b/system/rest/user.go @@ -50,7 +50,7 @@ func (ctrl User) List(ctx context.Context, r *request.UserList) (interface{}, er Sort: rh.NormalizeSortColumns(r.Sort), - PageFilter: rh.Paging(r.Page, r.PerPage), + PageFilter: rh.Paging(r), } if r.IncSuspended && f.Suspended == 0 {