From 876f3a7ed04820abf7588c1eaa27f4ca9b20a4e7 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Tue, 12 Nov 2019 14:34:44 +0100 Subject: [PATCH] Application sorting & filtering --- system/repository/application.go | 7 +++++++ system/rest/application.go | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/system/repository/application.go b/system/repository/application.go index a47d78ccc..bd392cf59 100644 --- a/system/repository/application.go +++ b/system/repository/application.go @@ -104,6 +104,13 @@ func (r *application) Find(filter types.ApplicationFilter) (set types.Applicatio query = query.Where(f.IsReadable) } + if f.Query != "" { + qs := "%" + f.Query + "%" + query = query.Where(squirrel.Or{ + squirrel.Like{"name": qs}, + }) + } + var orderBy []string if orderBy, err = rh.ParseOrder(f.Sort, r.columns()...); err != nil { return diff --git a/system/rest/application.go b/system/rest/application.go index ce49d1be4..2df356e43 100644 --- a/system/rest/application.go +++ b/system/rest/application.go @@ -2,6 +2,7 @@ package rest import ( "context" + "strings" "github.com/titpetric/factory/resputil" @@ -50,10 +51,17 @@ func (Application) New() *Application { } func (ctrl *Application) List(ctx context.Context, r *request.ApplicationList) (interface{}, error) { + normalizeSortColumns := strings.NewReplacer( + "createdAt", + "created_at", + ) + f := types.ApplicationFilter{ Name: r.Name, Query: r.Query, - Sort: r.Sort, + + Sort: normalizeSortColumns.Replace(r.Sort), + PageFilter: rh.Paging(r.Page, r.PerPage), }