From 1f42c5e000c3fc09e201a8e87eb79ea05cad7e35 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Fri, 20 May 2022 17:43:47 -0600 Subject: Add tag selector to index --- srv/src/post/post.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'srv/src/post/post.go') diff --git a/srv/src/post/post.go b/srv/src/post/post.go index bf851af..29a984f 100644 --- a/srv/src/post/post.go +++ b/srv/src/post/post.go @@ -68,6 +68,9 @@ type Store interface { // descending, or empty slice. GetByTag(tag string) ([]StoredPost, error) + // GetTags returns all tags which have at least one Post using them. + GetTags() ([]string, error) + // Delete will delete the StoredPost with the given ID. Delete(id string) error } @@ -340,6 +343,30 @@ func (s *store) GetByTag(tag string) ([]StoredPost, error) { return posts, err } +func (s *store) GetTags() ([]string, error) { + + rows, err := s.db.Query(`SELECT tag FROM post_tags GROUP BY tag`) + if err != nil { + return nil, fmt.Errorf("querying all tags: %w", err) + } + defer rows.Close() + + var tags []string + + for rows.Next() { + + var tag string + + if err := rows.Scan(&tag); err != nil { + return nil, fmt.Errorf("scanning tag: %w", err) + } + + tags = append(tags, tag) + } + + return tags, nil +} + func (s *store) Delete(id string) error { tx, err := s.db.Begin() -- cgit v1.2.3