mirror of
https://github.com/miniflux/v2.git
synced 2025-06-27 16:36:00 +00:00
Add API endpoint to flush history
This commit is contained in:
parent
1350f84ea4
commit
5774323f2e
5 changed files with 48 additions and 4 deletions
|
@ -512,6 +512,12 @@ func (c *Client) FetchCounters() (*FeedCounters, error) {
|
||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FlushHistory changes all entries with the status "read" to "removed".
|
||||||
|
func (c *Client) FlushHistory() error {
|
||||||
|
_, err := c.request.Put("/v1/flush-history", nil)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func buildFilterQueryString(path string, filter *Filter) string {
|
func buildFilterQueryString(path string, filter *Filter) string {
|
||||||
if filter != nil {
|
if filter != nil {
|
||||||
values := url.Values{}
|
values := url.Values{}
|
||||||
|
|
|
@ -66,4 +66,5 @@ func Serve(router *mux.Router, store *storage.Storage, pool *worker.Pool) {
|
||||||
sr.HandleFunc("/entries/{entryID}/bookmark", handler.toggleBookmark).Methods(http.MethodPut)
|
sr.HandleFunc("/entries/{entryID}/bookmark", handler.toggleBookmark).Methods(http.MethodPut)
|
||||||
sr.HandleFunc("/entries/{entryID}/save", handler.saveEntry).Methods(http.MethodPost)
|
sr.HandleFunc("/entries/{entryID}/save", handler.saveEntry).Methods(http.MethodPost)
|
||||||
sr.HandleFunc("/entries/{entryID}/fetch-content", handler.fetchContent).Methods(http.MethodGet)
|
sr.HandleFunc("/entries/{entryID}/fetch-content", handler.fetchContent).Methods(http.MethodGet)
|
||||||
|
sr.HandleFunc("/flush-history", handler.flushHistory).Methods(http.MethodPut, http.MethodDelete)
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,6 +283,12 @@ func (h *handler) fetchContent(w http.ResponseWriter, r *http.Request) {
|
||||||
json.OK(w, r, map[string]string{"content": entry.Content})
|
json.OK(w, r, map[string]string{"content": entry.Content})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *handler) flushHistory(w http.ResponseWriter, r *http.Request) {
|
||||||
|
loggedUserID := request.UserID(r)
|
||||||
|
go h.store.FlushHistory(loggedUserID)
|
||||||
|
json.Accepted(w, r)
|
||||||
|
}
|
||||||
|
|
||||||
func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) {
|
func configureFilters(builder *storage.EntryQueryBuilder, r *http.Request) {
|
||||||
if beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0); beforeEntryID > 0 {
|
if beforeEntryID := request.QueryInt64Param(r, "before_entry_id", 0); beforeEntryID > 0 {
|
||||||
builder.BeforeEntryID(beforeEntryID)
|
builder.BeforeEntryID(beforeEntryID)
|
||||||
|
|
|
@ -442,7 +442,7 @@ func (s *Storage) ToggleBookmark(userID int64, entryID int64) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// FlushHistory set all entries with the status "read" to "removed".
|
// FlushHistory changes all entries with the status "read" to "removed".
|
||||||
func (s *Storage) FlushHistory(userID int64) error {
|
func (s *Storage) FlushHistory(userID int64) error {
|
||||||
query := `
|
query := `
|
||||||
UPDATE
|
UPDATE
|
||||||
|
|
|
@ -434,9 +434,9 @@ func TestHistoryOrder(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedEntry := result.Entries[2].ID
|
selectedEntryID := result.Entries[2].ID
|
||||||
|
|
||||||
err = client.UpdateEntries([]int64{selectedEntry}, miniflux.EntryStatusRead)
|
err = client.UpdateEntries([]int64{selectedEntryID}, miniflux.EntryStatusRead)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -446,7 +446,38 @@ func TestHistoryOrder(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if history.Entries[0].ID != selectedEntry {
|
if history.Entries[0].ID != selectedEntryID {
|
||||||
t.Fatal("The entry that we just read should be at the top of the history")
|
t.Fatal("The entry that we just read should be at the top of the history")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFlushHistory(t *testing.T) {
|
||||||
|
client := createClient(t)
|
||||||
|
createFeed(t, client)
|
||||||
|
|
||||||
|
result, err := client.Entries(&miniflux.Filter{Limit: 1})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedEntryID := result.Entries[0].ID
|
||||||
|
|
||||||
|
err = client.UpdateEntries([]int64{selectedEntryID}, miniflux.EntryStatusRead)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = client.FlushHistory()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
history, err := client.Entries(&miniflux.Filter{Status: miniflux.EntryStatusRemoved})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if history.Entries[0].ID != selectedEntryID {
|
||||||
|
t.Fatal("The entry that we just read should have the removed status")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue