item list functions

This commit is contained in:
Nazar Kanaev 2020-06-23 23:21:21 +01:00 committed by nkanaev
parent 1200ef7846
commit 064c5fca6a
2 changed files with 62 additions and 1 deletions

View File

@ -23,7 +23,7 @@ func main() {
store.RenameFeed(feed.Id, "newtitle")
log.Print(store.ListFeeds())
*/
/*
/*;
items := make([]storage.Item, 3, 3)
items = append(items, storage.Item{
Id: "id",
@ -65,5 +65,6 @@ func main() {
Image: "image",
})
log.Print(store.CreateItems(items))
log.Print(store.ListItems())
*/
}

View File

@ -1,5 +1,7 @@
package storage
import "fmt"
type ItemStatus int
const (
@ -56,3 +58,61 @@ func (s *Storage) CreateItems(items []Item) bool {
}
return true
}
func itemQuery(s *Storage, cond string, v ...interface{}) []Item {
result := make([]Item, 0, 0)
query := fmt.Sprintf(`
select
id, feed_id, title, link, description,
content, author, date, date_updated, status, image
from items
where %s`, cond)
s.log.Print(query)
rows, err := s.db.Query(query, v...)
if err != nil {
s.log.Print(err)
return result
}
for rows.Next() {
var x Item
err = rows.Scan(
&x.Id,
&x.FeedId,
&x.Title,
&x.Link,
&x.Description,
&x.Content,
&x.Author,
&x.Date,
&x.DateUpdated,
&x.Status,
&x.Image,
)
if err != nil {
s.log.Print(err)
return result
}
result = append(result, x)
}
return result
}
func (s *Storage) ListItems() []Item {
return itemQuery(s, `1`)
}
func (s *Storage) ListFolderItems(folder_id int64) []Item {
return itemQuery(s, `folder_id = ?`, folder_id)
}
func (s *Storage) ListFolderItemsFiltered(folder_id int64, status ItemStatus) []Item {
return itemQuery(s, `folder_id = ? and status = ?`, folder_id, status)
}
func (s *Storage) ListFeedItems(feed_id int64) []Item {
return itemQuery(s, `feed_id = ?`, feed_id)
}
func (s *Storage) ListFeedItemsFiltered(feed_id int64, status ItemStatus) []Item {
return itemQuery(s, `feed_id = ? and status = ?`, feed_id, status)
}