summaryrefslogtreecommitdiffstats
path: root/pkg/entries/entries.go
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.net>2025-09-09 22:44:09 +0100
committerLeonardo Bishop <me@leonardobishop.net>2025-09-09 22:44:09 +0100
commitf1741a7faa9538e9b12ac60e0fbf6c7721a36059 (patch)
tree2b70b14fc20a8520718910a0cd2e0134790c6f53 /pkg/entries/entries.go
Initial commit
Diffstat (limited to 'pkg/entries/entries.go')
-rw-r--r--pkg/entries/entries.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/pkg/entries/entries.go b/pkg/entries/entries.go
new file mode 100644
index 0000000..2b0967b
--- /dev/null
+++ b/pkg/entries/entries.go
@@ -0,0 +1,52 @@
+package entries
+
+import (
+ "context"
+ "database/sql"
+ "fmt"
+
+ "git.leonardobishop.net/history/pkg/database/sqlc"
+)
+
+type Service interface {
+ CreateEntry(title, kind, url, description string) (*sqlc.Entry, error)
+ GetEntries() ([]sqlc.GetEntriesRow, error)
+}
+
+type service struct {
+ db *sql.DB
+}
+
+func NewService(db *sql.DB) Service {
+ return &service{
+ db: db,
+ }
+}
+
+func (s *service) CreateEntry(title, kind, url, description string) (*sqlc.Entry, error) {
+ queries := sqlc.New(s.db)
+
+ entry, err := queries.CreateEntryWithKindName(context.Background(), sqlc.CreateEntryWithKindNameParams{
+ Title: title,
+ Url: url,
+ Description: description,
+ Name: kind,
+ })
+
+ if err != nil {
+ return nil, fmt.Errorf("could not create entry: %w", err)
+ }
+
+ return &entry, nil
+}
+
+func (s *service) GetEntries() ([]sqlc.GetEntriesRow, error) {
+ queries := sqlc.New(s.db)
+
+ entries, err := queries.GetEntries(context.Background())
+ if err != nil {
+ return make([]sqlc.GetEntriesRow, 0), fmt.Errorf("could not get entries: %w", err)
+ }
+
+ return entries, nil
+}