From 27196589fbd36f5f840e51b59bd6253d0f865db3 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 16 Dec 2017 11:25:18 -0800 Subject: Add FeedIcon API call and update dependencies --- storage/icon.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'storage') diff --git a/storage/icon.go b/storage/icon.go index 1f38938..f5c71cb 100644 --- a/storage/icon.go +++ b/storage/icon.go @@ -38,6 +38,28 @@ func (s *Storage) IconByID(iconID int64) (*model.Icon, error) { return &icon, nil } +// IconByFeedID returns a feed icon. +func (s *Storage) IconByFeedID(userID, feedID int64) (*model.Icon, error) { + defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:IconByFeedID] userID=%d, feedID=%d", userID, feedID)) + 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 AND feeds.id=$2 + LIMIT 1 + ` + + var icon model.Icon + err := s.db.QueryRow(query, userID, feedID).Scan(&icon.ID, &icon.Hash, &icon.MimeType, &icon.Content) + if err != nil { + return nil, fmt.Errorf("unable to fetch icon: %v", err) + } + + return &icon, nil +} + // IconByHash returns an icon by the hash (checksum). func (s *Storage) IconByHash(icon *model.Icon) error { defer helper.ExecutionTime(time.Now(), "[Storage:IconByHash]") -- cgit v1.2.3