diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-06-09 13:40:20 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-06-09 13:40:20 -0700 |
commit | c5373ff2bffb3a3e3d37b3eb6bd1cdc733d9c590 (patch) | |
tree | cb64ae377a69a1305cff8b7f7b2c968fc264ed5a /ui | |
parent | bd70640794e93ed31f153dd9d4152d6ccb8b0e2f (diff) |
Rewrite individual entry pagination SQL queries
Diffstat (limited to 'ui')
-rw-r--r-- | ui/entry_bookmark.go | 8 | ||||
-rw-r--r-- | ui/entry_category.go | 8 | ||||
-rw-r--r-- | ui/entry_feed.go | 8 | ||||
-rw-r--r-- | ui/entry_prev_next.go | 36 | ||||
-rw-r--r-- | ui/entry_read.go | 8 | ||||
-rw-r--r-- | ui/entry_unread.go | 8 | ||||
-rw-r--r-- | ui/unread_entries.go | 2 |
7 files changed, 21 insertions, 57 deletions
diff --git a/ui/entry_bookmark.go b/ui/entry_bookmark.go index 0a91ef5..c598227 100644 --- a/ui/entry_bookmark.go +++ b/ui/entry_bookmark.go @@ -13,6 +13,7 @@ import ( "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/logger" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" "github.com/miniflux/miniflux/ui/session" "github.com/miniflux/miniflux/ui/view" ) @@ -57,10 +58,9 @@ func (c *Controller) ShowStarredEntry(w http.ResponseWriter, r *http.Request) { } } - builder = c.store.NewEntryQueryBuilder(user.ID) - builder.WithStarred() - - prevEntry, nextEntry, err := c.getEntryPrevNext(user, builder, entry.ID) + entryPaginationBuilder := storage.NewEntryPaginationBuilder(c.store, user.ID, entry.ID, user.EntryDirection) + entryPaginationBuilder.WithStarred() + prevEntry, nextEntry, err := entryPaginationBuilder.Entries() if err != nil { html.ServerError(w, err) return diff --git a/ui/entry_category.go b/ui/entry_category.go index c0dca82..f1c4fc2 100644 --- a/ui/entry_category.go +++ b/ui/entry_category.go @@ -13,6 +13,7 @@ import ( "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/logger" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" "github.com/miniflux/miniflux/ui/session" "github.com/miniflux/miniflux/ui/view" ) @@ -64,10 +65,9 @@ func (c *Controller) ShowCategoryEntry(w http.ResponseWriter, r *http.Request) { } } - builder = c.store.NewEntryQueryBuilder(user.ID) - builder.WithCategoryID(categoryID) - - prevEntry, nextEntry, err := c.getEntryPrevNext(user, builder, entry.ID) + entryPaginationBuilder := storage.NewEntryPaginationBuilder(c.store, user.ID, entry.ID, user.EntryDirection) + entryPaginationBuilder.WithCategoryID(categoryID) + prevEntry, nextEntry, err := entryPaginationBuilder.Entries() if err != nil { html.ServerError(w, err) return diff --git a/ui/entry_feed.go b/ui/entry_feed.go index 0635128..19c13b6 100644 --- a/ui/entry_feed.go +++ b/ui/entry_feed.go @@ -13,6 +13,7 @@ import ( "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/logger" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" "github.com/miniflux/miniflux/ui/session" "github.com/miniflux/miniflux/ui/view" ) @@ -64,10 +65,9 @@ func (c *Controller) ShowFeedEntry(w http.ResponseWriter, r *http.Request) { } } - builder = c.store.NewEntryQueryBuilder(user.ID) - builder.WithFeedID(feedID) - - prevEntry, nextEntry, err := c.getEntryPrevNext(user, builder, entry.ID) + entryPaginationBuilder := storage.NewEntryPaginationBuilder(c.store, user.ID, entry.ID, user.EntryDirection) + entryPaginationBuilder.WithFeedID(feedID) + prevEntry, nextEntry, err := entryPaginationBuilder.Entries() if err != nil { html.ServerError(w, err) return diff --git a/ui/entry_prev_next.go b/ui/entry_prev_next.go deleted file mode 100644 index 9ab415e..0000000 --- a/ui/entry_prev_next.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package ui - -import ( - "github.com/miniflux/miniflux/model" - "github.com/miniflux/miniflux/storage" -) - -func (c *Controller) getEntryPrevNext(user *model.User, builder *storage.EntryQueryBuilder, entryID int64) (prev *model.Entry, next *model.Entry, err error) { - builder.WithoutStatus(model.EntryStatusRemoved) - builder.WithOrder(model.DefaultSortingOrder) - builder.WithDirection(user.EntryDirection) - - entries, err := builder.GetEntries() - if err != nil { - return nil, nil, err - } - - n := len(entries) - for i := 0; i < n; i++ { - if entries[i].ID == entryID { - if i-1 >= 0 { - prev = entries[i-1] - } - - if i+1 < n { - next = entries[i+1] - } - } - } - - return prev, next, nil -} diff --git a/ui/entry_read.go b/ui/entry_read.go index 355dc27..9b98ab2 100644 --- a/ui/entry_read.go +++ b/ui/entry_read.go @@ -12,6 +12,7 @@ import ( "github.com/miniflux/miniflux/http/response/html" "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" "github.com/miniflux/miniflux/ui/session" "github.com/miniflux/miniflux/ui/view" ) @@ -47,10 +48,9 @@ func (c *Controller) ShowReadEntry(w http.ResponseWriter, r *http.Request) { return } - builder = c.store.NewEntryQueryBuilder(user.ID) - builder.WithStatus(model.EntryStatusRead) - - prevEntry, nextEntry, err := c.getEntryPrevNext(user, builder, entry.ID) + entryPaginationBuilder := storage.NewEntryPaginationBuilder(c.store, user.ID, entry.ID, user.EntryDirection) + entryPaginationBuilder.WithStatus(model.EntryStatusRead) + prevEntry, nextEntry, err := entryPaginationBuilder.Entries() if err != nil { html.ServerError(w, err) return diff --git a/ui/entry_unread.go b/ui/entry_unread.go index 8ccdab5..a599bcc 100644 --- a/ui/entry_unread.go +++ b/ui/entry_unread.go @@ -13,6 +13,7 @@ import ( "github.com/miniflux/miniflux/http/route" "github.com/miniflux/miniflux/logger" "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" "github.com/miniflux/miniflux/ui/session" "github.com/miniflux/miniflux/ui/view" ) @@ -48,10 +49,9 @@ func (c *Controller) ShowUnreadEntry(w http.ResponseWriter, r *http.Request) { return } - builder = c.store.NewEntryQueryBuilder(user.ID) - builder.WithStatus(model.EntryStatusUnread) - - prevEntry, nextEntry, err := c.getEntryPrevNext(user, builder, entry.ID) + entryPaginationBuilder := storage.NewEntryPaginationBuilder(c.store, user.ID, entry.ID, user.EntryDirection) + entryPaginationBuilder.WithStatus(model.EntryStatusUnread) + prevEntry, nextEntry, err := entryPaginationBuilder.Entries() if err != nil { html.ServerError(w, err) return diff --git a/ui/unread_entries.go b/ui/unread_entries.go index 6283a13..5dd3f7b 100644 --- a/ui/unread_entries.go +++ b/ui/unread_entries.go @@ -57,7 +57,7 @@ func (c *Controller) ShowUnreadPage(w http.ResponseWriter, r *http.Request) { view.Set("pagination", c.getPagination(route.Path(c.router, "unread"), countUnread, offset)) view.Set("menu", "unread") view.Set("user", user) - view.Set("countUnread", c.store.CountUnreadEntries(user.ID)) + view.Set("countUnread", countUnread) view.Set("hasSaveEntry", c.store.HasSaveEntry(user.ID)) html.OK(w, view.Render("unread_entries")) |