Skip to content

Commit

Permalink
Allow API search for entries which are not starred
Browse files Browse the repository at this point in the history
  • Loading branch information
knrdl authored Apr 14, 2022
1 parent fa8431c commit fb585d0
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 10 deletions.
6 changes: 5 additions & 1 deletion api/entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
json_parser "encoding/json"
"errors"
"net/http"
"strconv"
"time"

"miniflux.app/http/request"
Expand Down Expand Up @@ -240,7 +241,10 @@ func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) {
}

if request.HasQueryParam(r, "starred") {
builder.WithStarred()
starred, err := strconv.ParseBool(r.URL.Query().Get("starred"))
if err == nil {
builder.WithStarred(starred)
}
}

searchQuery := request.QueryStringParam(r, "search", "")
Expand Down
4 changes: 2 additions & 2 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -542,8 +542,8 @@ func buildFilterQueryString(path string, filter *Filter) string {
values.Set("before_entry_id", strconv.FormatInt(filter.BeforeEntryID, 10))
}

if filter.Starred {
values.Set("starred", "1")
if filter.Starred != "" {
values.Set("starred", filter.Starred)
}

if filter.Search != "" {
Expand Down
7 changes: 6 additions & 1 deletion client/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,14 +221,19 @@ type Enclosure struct {
// Enclosures represents a list of attachments.
type Enclosures []*Enclosure

const (
FilterNotStarred = "0"
FilterOnlyStarred = "1"
)

// Filter is used to filter entries.
type Filter struct {
Status string
Offset int
Limit int
Order string
Direction string
Starred bool
Starred string
Before int64
After int64
BeforeEntryID int64
Expand Down
2 changes: 1 addition & 1 deletion fever/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ func (h *handler) handleSavedItems(w http.ResponseWriter, r *http.Request) {
logger.Debug("[Fever] Fetching saved items for user #%d", userID)

builder := h.store.NewEntryQueryBuilder(userID)
builder.WithStarred()
builder.WithStarred(true)

entryIDs, err := builder.GetEntryIDs()
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion googlereader/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -1141,7 +1141,7 @@ func (h *handler) handleStarredStream(w http.ResponseWriter, r *http.Request, rm
clientIP := request.ClientIP(r)

builder := h.store.NewEntryQueryBuilder(rm.UserID)
builder.WithStarred()
builder.WithStarred(true)
builder.WithLimit(rm.Count)
builder.WithOrder(model.DefaultSortingOrder)
builder.WithDirection(rm.SortDirection)
Expand Down
8 changes: 6 additions & 2 deletions storage/entry_query_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,12 @@ func (e *EntryQueryBuilder) WithSearchQuery(query string) *EntryQueryBuilder {
}

// WithStarred adds starred filter.
func (e *EntryQueryBuilder) WithStarred() *EntryQueryBuilder {
e.conditions = append(e.conditions, "e.starred is true")
func (e *EntryQueryBuilder) WithStarred(starred bool) *EntryQueryBuilder {
if starred {
e.conditions = append(e.conditions, "e.starred is true")
} else {
e.conditions = append(e.conditions, "e.starred is false")
}
return e
}

Expand Down
3 changes: 2 additions & 1 deletion tests/entry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.

//go:build integration
// +build integration

package tests
Expand Down Expand Up @@ -123,7 +124,7 @@ func TestGetAllEntries(t *testing.T) {
t.Fatalf(`The items should be sorted differently "%v" vs "%v"`, resultWithDifferentSorting.Entries[0].Title, resultWithoutSorting.Entries[0].Title)
}

resultWithStarredEntries, err := client.Entries(&miniflux.Filter{Starred: true})
resultWithStarredEntries, err := client.Entries(&miniflux.Filter{Starred: miniflux.FilterOnlyStarred})
if err != nil {
t.Fatal(err)
}
Expand Down
2 changes: 1 addition & 1 deletion ui/bookmark_entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func (h *handler) showStarredPage(w http.ResponseWriter, r *http.Request) {
offset := request.QueryIntParam(r, "offset", 0)
builder := h.store.NewEntryQueryBuilder(user.ID)
builder.WithoutStatus(model.EntryStatusRemoved)
builder.WithStarred()
builder.WithStarred(true)
builder.WithOrder(user.EntryOrder)
builder.WithDirection(user.EntryDirection)
builder.WithOffset(offset)
Expand Down

0 comments on commit fb585d0

Please sign in to comment.