summaryrefslogtreecommitdiffstats
path: root/pkg/entries
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.net>2025-09-17 18:13:30 +0100
committerLeonardo Bishop <me@leonardobishop.net>2025-09-17 18:13:30 +0100
commit39a926cd521806aedc298ddd671d1a118794fcec (patch)
treea38908af8c91e01b2acec112b871c951e1bf6c1b /pkg/entries
parent1b7c07d9bbfb7984536a3aeade0f543251f1a666 (diff)
Add endpoints for web extension
Diffstat (limited to 'pkg/entries')
-rw-r--r--pkg/entries/entries.go58
1 files changed, 58 insertions, 0 deletions
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
+}