From 9e779891fa91f44a9734b79ccb4f6aef48a0de3f Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Thu, 18 Sep 2025 21:00:28 +0100 Subject: Add filters on html page --- pkg/database/migrations/0005_rename_read_kind.sql | 5 +++ pkg/database/query/entries.sql | 6 +++ pkg/database/query/kinds.sql | 2 + pkg/database/sqlc/entries.sql.go | 46 +++++++++++++++++++++++ pkg/database/sqlc/kinds.sql.go | 37 ++++++++++++++++++ 5 files changed, 96 insertions(+) create mode 100644 pkg/database/migrations/0005_rename_read_kind.sql create mode 100644 pkg/database/query/kinds.sql create mode 100644 pkg/database/sqlc/kinds.sql.go (limited to 'pkg/database') 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 +} -- cgit v1.2.3-70-g09d2