diff --git a/migrations/2021-09-13-143540_sections/down.sql b/migrations/2021-09-13-143540_sections/down.sql index bd985fd..792db38 100644 --- a/migrations/2021-09-13-143540_sections/down.sql +++ b/migrations/2021-09-13-143540_sections/down.sql @@ -4,5 +4,6 @@ drop trigger update_enforce_version_titles on versions; drop function enforce_version_titles; drop table versions cascade; +drop table tags cascade; drop table posts cascade; drop table sections cascade; diff --git a/migrations/2021-09-13-143540_sections/up.sql b/migrations/2021-09-13-143540_sections/up.sql index c663de4..3334941 100644 --- a/migrations/2021-09-13-143540_sections/up.sql +++ b/migrations/2021-09-13-143540_sections/up.sql @@ -46,7 +46,14 @@ create table versions ( -- This check allows draft posts to be created without having to enter a -- publish date, but forces them to have one if they're not a draft. - CHECK (is_draft OR publish_date IS NOT NULL) + CONSTRAINT no_null_published_date CHECK (is_draft OR publish_date IS NOT NULL) +); + +create table tags ( + post_id uuid NOT NULL REFERENCES posts(id) ON DELETE CASCADE, + value varchar(64) NOT NULL, + + PRIMARY KEY (post_id, value) ); create function enforce_version_titles() returns trigger as $$ diff --git a/src/schema.rs b/src/schema.rs index 246ea3c..b032c41 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -19,6 +19,13 @@ table! { } } +table! { + tags (post_id, value) { + post_id -> Uuid, + value -> Varchar, + } +} + table! { versions (id) { id -> Uuid, @@ -31,10 +38,12 @@ table! { } joinable!(posts -> sections (section_id)); +joinable!(tags -> posts (post_id)); joinable!(versions -> posts (post_id)); allow_tables_to_appear_in_same_query!( posts, sections, + tags, versions, );