aboutsummaryrefslogtreecommitdiffhomepage
path: root/storage/icon.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-12-03 17:44:27 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-12-03 17:44:27 -0800
commitbc20e0884b3ca051ae77e1bb6e2de11419d36d4d (patch)
tree993ff7aad2b98d5fe71b2decde7b36c4dd99d184 /storage/icon.go
parentae62e543d3a1173cd39f1910cb67c95a56a7a6a4 (diff)
Add Fever API
Diffstat (limited to 'storage/icon.go')
-rw-r--r--storage/icon.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/storage/icon.go b/storage/icon.go
index e021d29..48b5f46 100644
--- a/storage/icon.go
+++ b/storage/icon.go
@@ -101,6 +101,37 @@ func (s *Storage) CreateFeedIcon(feed *model.Feed, icon *model.Icon) error {
return nil
}
+// Icons returns all icons tht belongs to a user.
+func (s *Storage) Icons(userID int64) (model.Icons, error) {
+ defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:Icons] userID=%d", userID))
+ query := `
+ SELECT
+ icons.id, icons.hash, icons.mime_type, icons.content
+ FROM icons
+ LEFT JOIN feed_icons ON feed_icons.icon_id=icons.id
+ LEFT JOIN feeds ON feeds.id=feed_icons.feed_id
+ WHERE feeds.user_id=$1
+ `
+
+ rows, err := s.db.Query(query, userID)
+ if err != nil {
+ return nil, fmt.Errorf("unable to fetch icons: %v", err)
+ }
+ defer rows.Close()
+
+ var icons model.Icons
+ for rows.Next() {
+ var icon model.Icon
+ err := rows.Scan(&icon.ID, &icon.Hash, &icon.MimeType, &icon.Content)
+ if err != nil {
+ return nil, fmt.Errorf("unable to fetch icons row: %v", err)
+ }
+ icons = append(icons, &icon)
+ }
+
+ return icons, nil
+}
+
func normalizeMimeType(mimeType string) string {
mimeType = strings.ToLower(mimeType)
switch mimeType {