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;
