From 8c5be814033283628da8d61b013f3e2908742b48 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Tue, 25 Aug 2020 20:02:02 +0200 Subject: [PATCH] Fix pagination and sort by updated column --- posts.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/posts.go b/posts.go index 6474397..f901853 100644 --- a/posts.go +++ b/posts.go @@ -118,12 +118,18 @@ type postsRequestConfig struct { func getPosts(context context.Context, config *postsRequestConfig) (posts []*Post, err error) { paths := make(map[string]int) var rows *sql.Rows + defaultSelection := "select p.path, coalesce(content, ''), coalesce(published, ''), coalesce(updated, ''), coalesce(parameter, ''), coalesce(value, '') " + defaultTables := " from posts p left outer join post_parameters pp on p.path = pp.path " + defaultSorting := " order by p.updated desc " if config.path != "" { - rows, err = appDb.QueryContext(context, "select p.path, coalesce(content, ''), coalesce(published, ''), coalesce(updated, ''), coalesce(parameter, ''), coalesce(value, '') from posts p left outer join post_parameters pp on p.path = pp.path where p.path=?", config.path) + query := defaultSelection + defaultTables + " where p.path=?" + defaultSorting + rows, err = appDb.QueryContext(context, query, config.path) } else if config.limit != 0 || config.offset != 0 { - rows, err = appDb.QueryContext(context, "select p.path, coalesce(content, ''), coalesce(published, ''), coalesce(updated, ''), coalesce(parameter, ''), coalesce(value, '') from posts p left outer join post_parameters pp on p.path = pp.path limit ? offset ?", config.limit, config.offset) + query := defaultSelection + " from (select * from posts p " + defaultSorting + " limit ? offset ?) p left outer join post_parameters pp on p.path = pp.path " + rows, err = appDb.QueryContext(context, query, config.limit, config.offset) } else { - rows, err = appDb.QueryContext(context, "select p.path, coalesce(content, ''), coalesce(published, ''), coalesce(updated, ''), coalesce(parameter, ''), coalesce(value, '') from posts p left outer join post_parameters pp on p.path = pp.path") + query := defaultSelection + defaultTables + defaultSorting + rows, err = appDb.QueryContext(context, query) } if err != nil { return nil, err