diff --git a/docs/erm/rss-reader_2025-04-30T19_35_20.850Z.dbml b/docs/erm/rss-reader_2025-04-30T19_35_20.850Z.dbml new file mode 100644 index 0000000..f9f0ade --- /dev/null +++ b/docs/erm/rss-reader_2025-04-30T19_35_20.850Z.dbml @@ -0,0 +1,41 @@ +Table user { + id uuid [ pk, not null, unique ] + mail text [ not null, unique ] + active boolean [ not null, default: true ] +} + +Table feed { + id uuid [ pk, not null, unique ] + name text + url text [ not null ] + public boolean [ not null, default: false ] +} + +Table articles { + id uuid [ pk, not null, unique ] + title text [ not null ] + description text + site_url text [ not null ] + image_url text + publish_date timestamptz [ not null ] + feed_id uuid [ not null ] +} + +Table user_to_feed { + id integer [ pk, increment, not null, unique ] + user_id uuid [ not null ] + feed_id uuid [ not null ] + owner boolean [ not null, default: False ] +} + +Ref fk_user_to_feed_user_id_user { + user_to_feed.user_id > user.id [ delete: no action, update: no action ] +} + +Ref fk_user_to_feed_feed_id_feed { + user_to_feed.feed_id > feed.id [ delete: no action, update: no action ] +} + +Ref fk_articles_feed_id_feed { + articles.feed_id > feed.id [ delete: no action, update: no action ] +} \ No newline at end of file diff --git a/docs/erm/rss-reader_2025-04-30T19_35_43.207Z.sql b/docs/erm/rss-reader_2025-04-30T19_35_43.207Z.sql new file mode 100644 index 0000000..e007f40 --- /dev/null +++ b/docs/erm/rss-reader_2025-04-30T19_35_43.207Z.sql @@ -0,0 +1,45 @@ +CREATE TABLE "user" ( + "id" UUID NOT NULL UNIQUE, + "mail" TEXT NOT NULL UNIQUE CHECK( (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 1 (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])), + "active" BOOLEAN NOT NULL DEFAULT true, + PRIMARY KEY("id") +); + +CREATE TABLE "feed" ( + "id" UUID NOT NULL UNIQUE, + "name" TEXT, + "url" TEXT NOT NULL, + "public" BOOLEAN NOT NULL DEFAULT false, + PRIMARY KEY("id") +); + +CREATE TABLE "articles" ( + "id" UUID NOT NULL UNIQUE, + "title" TEXT NOT NULL, + "description" TEXT, + "site_url" TEXT NOT NULL, + "image_url" TEXT, + "publish_date" TIMESTAMPTZ NOT NULL, + "feed_id" UUID NOT NULL, + PRIMARY KEY("id") +); + +CREATE TABLE "user_to_feed" ( + "id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY, + "user_id" UUID NOT NULL, + "feed_id" UUID NOT NULL, + "owner" BOOLEAN NOT NULL DEFAULT False, + PRIMARY KEY("id") +); + +ALTER TABLE "user_to_feed" +ADD FOREIGN KEY("user_id") REFERENCES "user"("id") +ON UPDATE NO ACTION ON DELETE NO ACTION; + +ALTER TABLE "user_to_feed" +ADD FOREIGN KEY("feed_id") REFERENCES "feed"("id") +ON UPDATE NO ACTION ON DELETE NO ACTION; + +ALTER TABLE "articles" +ADD FOREIGN KEY("feed_id") REFERENCES "feed"("id") +ON UPDATE NO ACTION ON DELETE NO ACTION; \ No newline at end of file diff --git a/docs/erm/rss-reader_2025-04-30T19_36_05.389Z.png b/docs/erm/rss-reader_2025-04-30T19_36_05.389Z.png new file mode 100644 index 0000000..90e2181 Binary files /dev/null and b/docs/erm/rss-reader_2025-04-30T19_36_05.389Z.png differ diff --git a/docs/erm/rss-reader_2025-04-30T19_36_16.551Z.svg b/docs/erm/rss-reader_2025-04-30T19_36_16.551Z.svg new file mode 100644 index 0000000..6e1d00e --- /dev/null +++ b/docs/erm/rss-reader_2025-04-30T19_36_16.551Z.svg @@ -0,0 +1,11 @@ +
fk_user_to_feed_user_id_usern1fk_user_to_feed_feed_id_feedn1fk_articles_feed_id_feedn1
user
id
mail
TEXT
active
BOOLEAN
feed
id
UUID
name
?TEXT
url
TEXT
public
BOOLEAN
articles
id
UUID
title
TEXT
description
?TEXT
site_url
TEXT
image_url
?TEXT
publish_date
TIMESTAMPTZ
feed_id
UUID
user_to_feed
id
INTEGER
user_id
UUID
feed_id
UUID
owner
BOOLEAN
\ No newline at end of file