diff --git a/db/manifest b/db/manifest index 691ae0001..1c648aa07 100755 --- a/db/manifest +++ b/db/manifest @@ -298,3 +298,4 @@ musician_search.sql enhance_band_profile.sql alter_band_profile_rate_defaults.sql repair_band_profile.sql +profile_teacher.sql diff --git a/db/up/profile_teacher.sql b/db/up/profile_teacher.sql new file mode 100644 index 000000000..b2fed066e --- /dev/null +++ b/db/up/profile_teacher.sql @@ -0,0 +1,73 @@ +CREATE TABLE teachers ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE, + introductory_video VARCHAR(1024) NULL, + years_teaching SMALLINT NOT NULL, + years_playing SMALLINT NOT NULL, + teaches_age_lower SMALLINT NOT NULL DEFAULT 0, + teaches_age_upper SMALLINT NOT NULL DEFAULT 0, + website VARCHAR(1024) NULL, + biography VARCHAR(4096) NOT NULL, + teaches_beginner BOOLEAN NOT NULL DEFAULT FALSE, + teaches_intermediat BOOLEAN NOT NULL DEFAULT FALSE, + teaches_advanced BOOLEAN NOT NULL DEFAULT FALSE, + price_per_lesson BOOLEAN NOT NULL DEFAULT FALSE, + price_per_month BOOLEAN NOT NULL DEFAULT FALSE, + lesson_duration_30 BOOLEAN NOT NULL DEFAULT FALSE, + lesson_duration_45 BOOLEAN NOT NULL DEFAULT FALSE, + lesson_duration_60 BOOLEAN NOT NULL DEFAULT FALSE, + lesson_duration_90 BOOLEAN NOT NULL DEFAULT FALSE, + lesson_duration_120 BOOLEAN NOT NULL DEFAULT FALSE, + price_per_lesson_cents INT NULL, + price_per_month_cents INT NULL, + lesson_duration_30_cents INT NULL, + lesson_duration_45_cents INT NULL, + lesson_duration_60_cents INT NULL, + lesson_duration_90_cents INT NULL, + lesson_duration_120_cents INT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE subjects( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + name VARCHAR(1024) NOT NULL, + description VARCHAR(4000) NULL +); + +CREATE TABLE languages( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + name VARCHAR(1024) NOT NULL, + description VARCHAR(4000) NULL +); + +-- Has many: +CREATE TABLE teacher_experience( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + teacher_id VARCHAR(64) REFERENCES teachers(id) ON DELETE CASCADE, + -- experience type: teaching, education, award: + experience_type VARCHAR(32) NOT NULL, + name VARCHAR(200) NOT NULL, + organization VARCHAR(200) NOT NULL, + start_year SMALLINT NOT NULL DEFAULT 0, + end_year SMALLINT NOT NULL DEFAULT 0 +); + +-- Has many/through tables: +CREATE TABLE teachers_genres( + teacher_id VARCHAR(64) REFERENCES teachers(id) ON DELETE CASCADE, + genre_id VARCHAR(64) REFERENCES genres(id) ON DELETE CASCADE +); +CREATE TABLE teachers_instruments( + teacher_id VARCHAR(64) REFERENCES teachers(id) ON DELETE CASCADE, + instrument_id VARCHAR(64) REFERENCES instruments(id) ON DELETE CASCADE +); +CREATE TABLE teachers_subjects( + teacher_id VARCHAR(64) REFERENCES teachers(id) ON DELETE CASCADE, + subject_id VARCHAR(64) REFERENCES subjects(id) ON DELETE CASCADE +); +CREATE TABLE teacher_languages( + teacher_id VARCHAR(64) REFERENCES teachers(id) ON DELETE CASCADE, + language_id VARCHAR(64) REFERENCES languages(id) ON DELETE CASCADE +); +