From 39a926cd521806aedc298ddd671d1a118794fcec Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Wed, 17 Sep 2025 18:13:30 +0100 Subject: Add endpoints for web extension --- pkg/entries/entries.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'pkg/entries/entries.go') diff --git a/pkg/entries/entries.go b/pkg/entries/entries.go index 0764f93..92f28d9 100644 --- a/pkg/entries/entries.go +++ b/pkg/entries/entries.go @@ -3,6 +3,7 @@ package entries import ( "context" "database/sql" + "errors" "fmt" "git.leonardobishop.net/stash/pkg/database/sqlc" @@ -10,9 +11,17 @@ import ( type Service interface { CreateEntry(title, kind, url, description string) (*sqlc.Entry, error) + UpdateEntryKind(id int64, kind string) (*sqlc.Entry, error) + DeleteEntry(id int64) error GetEntries() ([]sqlc.GetEntriesRow, error) + GetEntryURLs() ([]string, error) + GetEntryByUrl(url string) (*sqlc.GetEntryByUrlRow, error) } +var ( + ErrEntryNotFound = errors.New("entry not found") +) + type service struct { db *sql.DB } @@ -40,6 +49,30 @@ func (s *service) CreateEntry(title, kind, url, description string) (*sqlc.Entry return &entry, nil } +func (s *service) UpdateEntryKind(id int64, kind string) (*sqlc.Entry, error) { + queries := sqlc.New(s.db) + + entry, err := queries.UpdateEntryKind(context.Background(), sqlc.UpdateEntryKindParams{ + ID: id, + Name: kind, + }) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return nil, ErrEntryNotFound + } + return nil, fmt.Errorf("could not update entry: %w", err) + } + + return &entry, nil +} + +func (s *service) DeleteEntry(id int64) error { + queries := sqlc.New(s.db) + + _, err := queries.DeleteEntry(context.Background(), id) + return err +} + func (s *service) GetEntries() ([]sqlc.GetEntriesRow, error) { queries := sqlc.New(s.db) @@ -50,3 +83,28 @@ func (s *service) GetEntries() ([]sqlc.GetEntriesRow, error) { return entries, nil } + +func (s *service) GetEntryURLs() ([]string, error) { + queries := sqlc.New(s.db) + + entries, err := queries.GetEntryURLs(context.Background()) + if err != nil { + return make([]string, 0), fmt.Errorf("could not get entries: %w", err) + } + + return entries, nil +} + +func (s *service) GetEntryByUrl(url string) (*sqlc.GetEntryByUrlRow, error) { + queries := sqlc.New(s.db) + + entry, err := queries.GetEntryByUrl(context.Background(), url) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return nil, ErrEntryNotFound + } + return nil, fmt.Errorf("could not get entry: %w", err) + } + + return &entry, nil +} -- cgit v1.2.3-70-g09d2