aboutsummaryrefslogtreecommitdiffhomepage
path: root/ui
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-06-09 13:40:20 -0700
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-06-09 13:40:20 -0700
commitc5373ff2bffb3a3e3d37b3eb6bd1cdc733d9c590 (patch)
treecb64ae377a69a1305cff8b7f7b2c968fc264ed5a /ui
parentbd70640794e93ed31f153dd9d4152d6ccb8b0e2f (diff)
Rewrite individual entry pagination SQL queries
Diffstat (limited to 'ui')
-rw-r--r--ui/entry_bookmark.go8
-rw-r--r--ui/entry_category.go8
-rw-r--r--ui/entry_feed.go8
-rw-r--r--ui/entry_prev_next.go36
-rw-r--r--ui/entry_read.go8
-rw-r--r--ui/entry_unread.go8
-rw-r--r--ui/unread_entries.go2
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"))