Allow API search for entries which are not starred

This commit is contained in:
knrdl 2022-04-14 06:53:06 +02:00 committed by GitHub
parent fa8431c5c6
commit fb585d0086
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 24 additions and 10 deletions

View file

@ -8,6 +8,7 @@ import (
json_parser "encoding/json"
"errors"
"net/http"
"strconv"
"time"
"miniflux.app/http/request"
@ -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", "")

View file

@ -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 != "" {

View file

@ -221,6 +221,11 @@ 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
@ -228,7 +233,7 @@ type Filter struct {
Limit int
Order string
Direction string
Starred bool
Starred string
Before int64
After int64
BeforeEntryID int64

View file

@ -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 {

View file

@ -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)

View file

@ -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
}

View file

@ -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
@ -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)
}

View file

@ -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)