summaryrefslogtreecommitdiffstats
path: root/pkg/database
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.net>2025-09-18 21:00:28 +0100
committerLeonardo Bishop <me@leonardobishop.net>2025-09-18 21:00:28 +0100
commit9e779891fa91f44a9734b79ccb4f6aef48a0de3f (patch)
tree7b60a2129966461ed56532768c847595fd371377 /pkg/database
parent39a926cd521806aedc298ddd671d1a118794fcec (diff)
Add filters on html page
Diffstat (limited to 'pkg/database')
-rw-r--r--pkg/database/migrations/0005_rename_read_kind.sql5
-rw-r--r--pkg/database/query/entries.sql6
-rw-r--r--pkg/database/query/kinds.sql2
-rw-r--r--pkg/database/sqlc/entries.sql.go46
-rw-r--r--pkg/database/sqlc/kinds.sql.go37
5 files changed, 96 insertions, 0 deletions
diff --git a/pkg/database/migrations/0005_rename_read_kind.sql b/pkg/database/migrations/0005_rename_read_kind.sql
new file mode 100644
index 0000000..ec8b2c0
--- /dev/null
+++ b/pkg/database/migrations/0005_rename_read_kind.sql
@@ -0,0 +1,5 @@
+-- +goose Up
+
+UPDATE kinds
+SET name = "seen"
+WHERE name = "read";
diff --git a/pkg/database/query/entries.sql b/pkg/database/query/entries.sql
index 9584adf..37d11ce 100644
--- a/pkg/database/query/entries.sql
+++ b/pkg/database/query/entries.sql
@@ -20,6 +20,12 @@ SELECT title, url, description, timestamp, kinds.name as kind_name, kinds.emoji
JOIN kinds ON entries.kind == kinds.id
ORDER BY timestamp DESC;
+-- name: GetEntriesByKind :many
+SELECT title, url, description, timestamp, kinds.name as kind_name, kinds.emoji as kind_emoji FROM entries
+JOIN kinds ON entries.kind == kinds.id
+WHERE kinds.name = ?
+ORDER BY timestamp DESC;
+
-- name: GetEntryURLs :many
SELECT url FROM entries
ORDER BY timestamp DESC;
diff --git a/pkg/database/query/kinds.sql b/pkg/database/query/kinds.sql
new file mode 100644
index 0000000..91917f3
--- /dev/null
+++ b/pkg/database/query/kinds.sql
@@ -0,0 +1,2 @@
+-- name: GetKinds :many
+SELECT * FROM kinds;
diff --git a/pkg/database/sqlc/entries.sql.go b/pkg/database/sqlc/entries.sql.go
index 846076d..eadc25c 100644
--- a/pkg/database/sqlc/entries.sql.go
+++ b/pkg/database/sqlc/entries.sql.go
@@ -101,6 +101,52 @@ func (q *Queries) GetEntries(ctx context.Context) ([]GetEntriesRow, error) {
return items, nil
}
+const getEntriesByKind = `-- name: GetEntriesByKind :many
+SELECT title, url, description, timestamp, kinds.name as kind_name, kinds.emoji as kind_emoji FROM entries
+JOIN kinds ON entries.kind == kinds.id
+WHERE kinds.name = ?
+ORDER BY timestamp DESC
+`
+
+type GetEntriesByKindRow struct {
+ Title string `json:"title"`
+ Url string `json:"url"`
+ Description string `json:"description"`
+ Timestamp string `json:"timestamp"`
+ KindName string `json:"kind_name"`
+ KindEmoji string `json:"kind_emoji"`
+}
+
+func (q *Queries) GetEntriesByKind(ctx context.Context, name string) ([]GetEntriesByKindRow, error) {
+ rows, err := q.db.QueryContext(ctx, getEntriesByKind, name)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []GetEntriesByKindRow
+ for rows.Next() {
+ var i GetEntriesByKindRow
+ if err := rows.Scan(
+ &i.Title,
+ &i.Url,
+ &i.Description,
+ &i.Timestamp,
+ &i.KindName,
+ &i.KindEmoji,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const getEntryByUrl = `-- name: GetEntryByUrl :one
SELECT entries.id, title, url, description, timestamp, kinds.name as kind_name, kinds.emoji as kind_emoji FROM entries
JOIN kinds ON entries.kind == kinds.id
diff --git a/pkg/database/sqlc/kinds.sql.go b/pkg/database/sqlc/kinds.sql.go
new file mode 100644
index 0000000..a9efd90
--- /dev/null
+++ b/pkg/database/sqlc/kinds.sql.go
@@ -0,0 +1,37 @@
+// Code generated by sqlc. DO NOT EDIT.
+// versions:
+// sqlc v1.29.0
+// source: kinds.sql
+
+package sqlc
+
+import (
+ "context"
+)
+
+const getKinds = `-- name: GetKinds :many
+SELECT id, name, emoji FROM kinds
+`
+
+func (q *Queries) GetKinds(ctx context.Context) ([]Kind, error) {
+ rows, err := q.db.QueryContext(ctx, getKinds)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []Kind
+ for rows.Next() {
+ var i Kind
+ if err := rows.Scan(&i.ID, &i.Name, &i.Emoji); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}