From c877fa0d2cd557b001f9e213c238b2da8b008a61 Mon Sep 17 00:00:00 2001 From: Vojtech Mares Date: Sun, 28 Apr 2024 15:26:04 +0200 Subject: [PATCH] feat: add initial migration --- db/migrations/20240329172935_init.down.sql | 8 ++++ db/migrations/20240329172935_init.up.sql | 50 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 db/migrations/20240329172935_init.down.sql create mode 100644 db/migrations/20240329172935_init.up.sql diff --git a/db/migrations/20240329172935_init.down.sql b/db/migrations/20240329172935_init.down.sql new file mode 100644 index 0000000..a91b8c3 --- /dev/null +++ b/db/migrations/20240329172935_init.down.sql @@ -0,0 +1,8 @@ +BEGIN; + +DROP TABLE IF EXISTS training.attendees; +DROP TABLE IF EXISTS training.dates; +DROP TABLE IF EXISTS training.trainings; +DROP SCHEMA IF EXISTS training; + +COMMIT; diff --git a/db/migrations/20240329172935_init.up.sql b/db/migrations/20240329172935_init.up.sql new file mode 100644 index 0000000..8337a00 --- /dev/null +++ b/db/migrations/20240329172935_init.up.sql @@ -0,0 +1,50 @@ +BEGIN; + +CREATE SCHEMA IF NOT EXISTS training; + +CREATE TABLE IF NOT EXISTS training.trainings ( + id UUID PRIMARY KEY, + name varchar(255) NOT NULL, + description text NOT NULL, + days smallint NOT NULL, + price decimal NOT NULL +); + +CREATE TABLE IF NOT EXISTS training.dates ( + id UUID PRIMARY KEY, + training_id UUID NOT NULL, + date date NOT NULL, + start_time time NOT NULL, + days smallint NOT NULL, + price decimal NOT NULL, + is_online boolean NOT NULL, + location varchar(255) NOT NULL, + address varchar(255) NOT NULL, + capacity smallint NOT NULL, + FOREIGN KEY (training_id) REFERENCES training.trainings(id) +); + +CREATE TABLE IF NOT EXISTS training.attendees ( + id UUID PRIMARY KEY, + date_id UUID NOT NULL, + name varchar(255) NOT NULL, + email varchar(255) NOT NULL, + company varchar(255) NOT NULL, + role varchar(255) NOT NULL, + is_student boolean NOT NULL, + has_attended boolean NOT NULL, + has_paid boolean NOT NULL, + FOREIGN KEY (date_id) REFERENCES training.dates(id) +); + +CREATE TABLE IF NOT EXISTS training.feedback ( + id UUID PRIMARY KEY, + attendee_id UUID NOT NULL, + rating smallint NOT NULL, + comment text NOT NULL, + is_anonymous boolean NOT NULL, + is_sharing_allowed boolean NOT NULL, + FOREIGN KEY (attendee_id) REFERENCES training.attendees(id) +); + +COMMIT;