Added support for saving items
This commit is contained in:
@@ -57,6 +57,18 @@ func (fs *FeedStore) GetUnread() *[]ItemWithFeed {
|
||||
return items
|
||||
}
|
||||
|
||||
func (fs *FeedStore) GetSaved() *[]ItemWithFeed {
|
||||
items := &[]ItemWithFeed{}
|
||||
fs.getDB().Table("items").
|
||||
Where("save = ?", true).
|
||||
Select("items.*, feeds.title as feed_title, feeds.homepage_url as feed_homepage_url").
|
||||
Order("items.created desc, items.title").
|
||||
Joins("left join feeds on feeds.id = items.feed_id").
|
||||
Find(items)
|
||||
|
||||
return items
|
||||
}
|
||||
|
||||
func (fs *FeedStore) DeleteOldReadItems() {
|
||||
t := time.Now()
|
||||
threshold := t.Add(-time.Hour * 24 * 7)
|
||||
@@ -98,3 +110,12 @@ func (fs *FeedStore) MarkAsRead(itemID string) {
|
||||
|
||||
fs.getDB().Save(*item)
|
||||
}
|
||||
|
||||
func (fs *FeedStore) ToggleSaved(itemID string) {
|
||||
item := &Item{}
|
||||
fs.getDB().Where("id = ?", itemID).First(item)
|
||||
|
||||
item.Save = !item.Save
|
||||
|
||||
fs.getDB().Save(*item)
|
||||
}
|
||||
|
@@ -33,6 +33,10 @@ func (a *API) GetUnread(c *fiber.Ctx) error {
|
||||
return c.JSON(a.FeedStore.GetUnread())
|
||||
}
|
||||
|
||||
func (a *API) GetSaved(c *fiber.Ctx) error {
|
||||
return c.JSON(a.FeedStore.GetSaved())
|
||||
}
|
||||
|
||||
func (a *API) GetAll(c *fiber.Ctx) error {
|
||||
return c.JSON(a.FeedStore.GetAll())
|
||||
}
|
||||
@@ -60,3 +64,8 @@ func (a *API) RefreshAll(c *fiber.Ctx) error {
|
||||
|
||||
return c.JSON(a.FeedStore.GetUnread())
|
||||
}
|
||||
|
||||
func (a *API) SaveItem(c *fiber.Ctx) error {
|
||||
a.FeedStore.ToggleSaved(c.Params("id"))
|
||||
return nil
|
||||
}
|
||||
|
@@ -51,7 +51,9 @@ func Start(port string) error {
|
||||
app.Post("/api/feeds", api.PostFeed)
|
||||
app.Get("/api/feed/:id", api.GetFeed)
|
||||
app.Get("/api/item/:id", api.GetItem)
|
||||
app.Post("/api/item/:id/save", api.SaveItem)
|
||||
app.Get("/api/unread", api.GetUnread)
|
||||
app.Get("/api/saved", api.GetSaved)
|
||||
app.Get("/api/all", api.GetAll)
|
||||
app.Post("/api/read/:id", api.PostRead)
|
||||
app.Post("/api/read", api.PostReadAll)
|
||||
|
Reference in New Issue
Block a user