diff options
Diffstat (limited to '')
-rw-r--r-- | storage/entry_query_builder.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/storage/entry_query_builder.go b/storage/entry_query_builder.go index 437e769c..dae7bc1f 100644 --- a/storage/entry_query_builder.go +++ b/storage/entry_query_builder.go @@ -135,6 +135,17 @@ func (e *EntryQueryBuilder) WithStatuses(statuses []string) *EntryQueryBuilder { return e } +// WithTags filter by a list of entry tags. +func (e *EntryQueryBuilder) WithTags(tags []string) *EntryQueryBuilder { + if len(tags) > 0 { + for _, cat := range tags { + e.conditions = append(e.conditions, fmt.Sprintf("$%d = ANY(e.tags)", len(e.args)+1)) + e.args = append(e.args, cat) + } + } + return e +} + // WithoutStatus set the entry status that should not be returned. func (e *EntryQueryBuilder) WithoutStatus(status string) *EntryQueryBuilder { if status != "" { @@ -250,6 +261,7 @@ func (e *EntryQueryBuilder) GetEntries() (model.Entries, error) { e.reading_time, e.created_at, e.changed_at, + e.tags, f.title as feed_title, f.feed_url, f.site_url, @@ -312,6 +324,7 @@ func (e *EntryQueryBuilder) GetEntries() (model.Entries, error) { &entry.ReadingTime, &entry.CreatedAt, &entry.ChangedAt, + pq.Array(&entry.Tags), &entry.Feed.Title, &entry.Feed.FeedURL, &entry.Feed.SiteURL, |