-- +micrate Up -- SQL in section 'Up' is executed when this migration is applied CREATE TYPE user_roles AS ENUM ('Admin', 'Teacher', 'Student'); CREATE TABLE users( id BIGSERIAL PRIMARY KEY, firstname TEXT NOT NULL, lastname TEXT NOT NULL, email TEXT NOT NULL, PASSWORD TEXT NOT NULL, role user_roles NOT NULL, blocked BOOLEAN NOT NULL, UNIQUE (firstname, lastname, email) ); CREATE TABLE admins( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL UNIQUE REFERENCES users(id) ); CREATE TABLE teachers( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL UNIQUE REFERENCES users(id), max_students INT NOT NULL ); CREATE TABLE students( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL UNIQUE REFERENCES users(id), skif BOOLEAN NOT NULL ); ALTER TABLE users ADD COLUMN admin_id BIGINT UNIQUE REFERENCES admins(id); ALTER TABLE users ADD COLUMN teacher_id BIGINT UNIQUE REFERENCES teachers(id); ALTER TABLE users ADD COLUMN student_id BIGINT UNIQUE REFERENCES students(id); CREATE TABLE votes( id BIGSERIAL PRIMARY KEY, student_id BIGINT NOT NULL UNIQUE REFERENCES students(id) ); ALTER TABLE students ADD COLUMN vote_id BIGINT UNIQUE REFERENCES votes(id); CREATE TABLE teacher_votes( id BIGSERIAL PRIMARY KEY, vote_id BIGINT NOT NULL REFERENCES votes(id), teacher_id BIGINT NOT NULL REFERENCES teachers(id), priority INT NOT NULL ); -- +micrate Down -- SQL section 'Down' is executed when this migration is rolled back DROP TABLE teacher_votes; DROP TABLE votes; DROP TABLE users; DROP TABLE admins; DROP TABLE teachers; DROP TABLE students; DROP TYPE user_roles;