Items will now be added when adding feed, add /feed/{id} and improve SQL
This commit is contained in:
parent
7b056a4a41
commit
99cd70165e
14 changed files with 807 additions and 282 deletions
|
|
@ -51,3 +51,87 @@ SELECT
|
|||
COUNT(*)
|
||||
FROM
|
||||
feeds;
|
||||
|
||||
-- name: CreateItem :one
|
||||
INSERT INTO
|
||||
items (
|
||||
created_at,
|
||||
updated_at,
|
||||
deleted_at,
|
||||
title,
|
||||
"description",
|
||||
content,
|
||||
link,
|
||||
links,
|
||||
updated,
|
||||
updated_parsed,
|
||||
published,
|
||||
published_parsed,
|
||||
"guid",
|
||||
categories,
|
||||
custom,
|
||||
feed_id
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
$1,
|
||||
$2,
|
||||
$3,
|
||||
$4,
|
||||
$5,
|
||||
$6,
|
||||
$7,
|
||||
$8,
|
||||
$9,
|
||||
$10,
|
||||
$11,
|
||||
$12,
|
||||
$13,
|
||||
$14,
|
||||
$15,
|
||||
$16
|
||||
) RETURNING *;
|
||||
|
||||
-- name: CountItems :one
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
items;
|
||||
|
||||
-- name: GetFeed :one
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
feeds
|
||||
WHERE
|
||||
id = $1;
|
||||
|
||||
-- name: GetFeeds :many
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
feeds
|
||||
ORDER BY
|
||||
created_at DESC
|
||||
LIMIT $1
|
||||
OFFSET $2;
|
||||
|
||||
-- name: GetItem :one
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
items
|
||||
WHERE
|
||||
id = $1;
|
||||
|
||||
-- name: GetItems :many
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
items
|
||||
WHERE
|
||||
feed_id = $1
|
||||
ORDER BY
|
||||
created_at DESC
|
||||
LIMIT $2
|
||||
OFFSET $3;
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
-- +goose StatementBegin
|
||||
-- Create table feeds if not exists
|
||||
CREATE TABLE IF NOT EXISTS feeds (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
"url" TEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed: https://github.com/mmcdole/gofeed/blob/master/feed.go
|
||||
title TEXT,
|
||||
"description" TEXT,
|
||||
|
|
@ -14,9 +14,9 @@ CREATE TABLE IF NOT EXISTS feeds (
|
|||
feed_link TEXT,
|
||||
links TEXT [],
|
||||
updated TEXT,
|
||||
updated_parsed TIMESTAMP,
|
||||
updated_parsed TIMESTAMPTZ,
|
||||
published TEXT,
|
||||
published_parsed TIMESTAMP,
|
||||
published_parsed TIMESTAMPTZ,
|
||||
-- Authors - See feed_authors
|
||||
"language" TEXT,
|
||||
-- Image - See feed_images
|
||||
|
|
@ -35,10 +35,10 @@ CREATE TABLE IF NOT EXISTS feeds (
|
|||
-- Feed item
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L49
|
||||
CREATE TABLE IF NOT EXISTS items (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
title TEXT,
|
||||
"description" TEXT,
|
||||
|
|
@ -59,7 +59,7 @@ CREATE TABLE IF NOT EXISTS items (
|
|||
-- Extensions - See item_extensions
|
||||
custom JSONB,
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,34 +3,34 @@
|
|||
-- Extensions for feeds
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/extensions.go#L3
|
||||
CREATE TABLE IF NOT EXISTS feed_extensions (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"name" TEXT,
|
||||
"value" TEXT,
|
||||
attrs JSONB,
|
||||
children JSONB,
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Extensions for items
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/extensions.go#L3
|
||||
CREATE TABLE IF NOT EXISTS item_extensions (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"name" TEXT,
|
||||
"value" TEXT,
|
||||
attrs JSONB,
|
||||
children JSONB,
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,32 +3,32 @@
|
|||
-- Person for feeds
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L73
|
||||
CREATE TABLE IF NOT EXISTS feed_authors (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"name" TEXT,
|
||||
email TEXT,
|
||||
uri TEXT,
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Person for items
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L73
|
||||
CREATE TABLE IF NOT EXISTS item_authors (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"name" TEXT,
|
||||
email TEXT,
|
||||
uri TEXT,
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,30 +3,30 @@
|
|||
-- Image for feeds
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L80
|
||||
CREATE TABLE IF NOT EXISTS feed_images (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"url" TEXT,
|
||||
title TEXT,
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Image for items
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L80
|
||||
CREATE TABLE IF NOT EXISTS item_images (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"url" TEXT,
|
||||
title TEXT,
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
-- Dublin Core for feeds
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/dublincore.go#L5
|
||||
CREATE TABLE IF NOT EXISTS feed_dublin_cores (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
title TEXT [],
|
||||
creator TEXT [],
|
||||
|
|
@ -25,17 +25,17 @@ CREATE TABLE IF NOT EXISTS feed_dublin_cores (
|
|||
coverage TEXT [],
|
||||
rights TEXT [],
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Dublin Core for items
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/dublincore.go#L5
|
||||
CREATE TABLE IF NOT EXISTS item_dublin_cores (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
title TEXT [],
|
||||
creator TEXT [],
|
||||
|
|
@ -54,7 +54,7 @@ CREATE TABLE IF NOT EXISTS item_dublin_cores (
|
|||
coverage TEXT [],
|
||||
rights TEXT [],
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
-- Itunes for feeds
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/itunes.go#L5
|
||||
CREATE TABLE IF NOT EXISTS feed_itunes (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
author TEXT,
|
||||
"block" TEXT,
|
||||
|
|
@ -20,17 +20,17 @@ CREATE TABLE IF NOT EXISTS feed_itunes (
|
|||
new_feed_url TEXT,
|
||||
"type" TEXT,
|
||||
-- Link to feed
|
||||
feed_id INTEGER NOT NULL,
|
||||
feed_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_feed_id FOREIGN KEY (feed_id) REFERENCES feeds (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Itunes for items
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/itunes.go#L22
|
||||
CREATE TABLE IF NOT EXISTS item_itunes (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
author TEXT,
|
||||
"block" TEXT,
|
||||
|
|
@ -46,14 +46,14 @@ CREATE TABLE IF NOT EXISTS item_itunes (
|
|||
"order" TEXT,
|
||||
episode_type TEXT,
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Itunes categories
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/itunes.go#L39
|
||||
CREATE TABLE IF NOT EXISTS itunes_categories (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
|
@ -61,14 +61,14 @@ CREATE TABLE IF NOT EXISTS itunes_categories (
|
|||
"text" TEXT,
|
||||
subcategory TEXT,
|
||||
-- Link to itunes
|
||||
itunes_id INTEGER NOT NULL,
|
||||
itunes_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_itunes_id FOREIGN KEY (itunes_id) REFERENCES feed_itunes (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Itunes owners
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/extensions/itunes.go#L45
|
||||
CREATE TABLE IF NOT EXISTS itunes_owners (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
|
|
@ -76,7 +76,7 @@ CREATE TABLE IF NOT EXISTS itunes_owners (
|
|||
email TEXT,
|
||||
"name" TEXT,
|
||||
-- Link to itunes
|
||||
itunes_id INTEGER NOT NULL,
|
||||
itunes_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_itunes_id FOREIGN KEY (itunes_id) REFERENCES feed_itunes (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@
|
|||
-- Enclosures
|
||||
-- https://github.com/mmcdole/gofeed/blob/master/feed.go#L86
|
||||
CREATE TABLE IF NOT EXISTS enclosures (
|
||||
id SERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP DEFAULT NULL,
|
||||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMPTZ DEFAULT NULL,
|
||||
-- From gofeed:
|
||||
"url" TEXT,
|
||||
"length" TEXT,
|
||||
"type" TEXT,
|
||||
-- Link to feed item (Also called feed entry)
|
||||
item_id INTEGER NOT NULL,
|
||||
item_id BIGINT NOT NULL,
|
||||
CONSTRAINT fk_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue