91 lines
4.1 KiB
SQL
91 lines
4.1 KiB
SQL
|
|
CREATE TABLE lesson_package_types (
|
|
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name VARCHAR NOT NULL,
|
|
description VARCHAR NOT NULL,
|
|
package_type VARCHAR(64) NOT NULL,
|
|
price NUMERIC(8,2),
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE lesson_package_purchases (
|
|
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
lesson_package_type_id VARCHAR(64) REFERENCES lesson_package_types(id) NOT NULL,
|
|
user_id VARCHAR(64) REFERENCES users(id) NOT NULL,
|
|
teacher_id VARCHAR(64) REFERENCES teachers(id),
|
|
price NUMERIC(8,2),
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE lesson_bookings (
|
|
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
user_id VARCHAR(64) REFERENCES users(id) NOT NULL,
|
|
lesson_type VARCHAR(64) NOT NULL,
|
|
recurring BOOLEAN NOT NULL,
|
|
lesson_length INTEGER NOT NULL,
|
|
payment_style VARCHAR(64) NOT NULL,
|
|
description VARCHAR,
|
|
teacher_id VARCHAR(64) REFERENCES users(id) NOT NULL,
|
|
card_presumed_ok BOOLEAN NOT NULL DEFAULT FALSE,
|
|
sent_notices BOOLEAN NOT NULL DEFAULT FALSE,
|
|
status VARCHAR,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE lesson_sessions (
|
|
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
music_session_id VARCHAR(64) REFERENCES music_sessions(id) NOT NULL,
|
|
lesson_type VARCHAR(64) NOT NULL,
|
|
teacher_id VARCHAR(64) REFERENCES users(id) NOT NULL,
|
|
lesson_package_purchase_id VARCHAR(64) REFERENCES lesson_package_purchases(id),
|
|
lesson_booking_id VARCHAR(64) REFERENCES lesson_bookings(id),
|
|
duration INTEGER NOT NULL,
|
|
price NUMERIC(8,2) NOT NULL,
|
|
teacher_complete BOOLEAN DEFAULT FALSE NOT NULL,
|
|
student_complete BOOLEAN DEFAULT FALSE NOT NULL,
|
|
student_canceled BOOLEAN DEFAULT FALSE NOT NULL,
|
|
teacher_canceled BOOLEAN DEFAULT FALSE NOT NULL,
|
|
student_canceled_at TIMESTAMP,
|
|
teacher_canceled_at TIMESTAMP,
|
|
student_canceled_reason VARCHAR,
|
|
teacher_canceled_reason VARCHAR,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
ALTER TABLE notifications ADD COLUMN lesson_session_id VARCHAR(64) REFERENCES lesson_sessions(id);
|
|
|
|
ALTER TABLE users ADD COLUMN is_a_student BOOLEAN NOT NULL DEFAULT FALSE;
|
|
ALTER TABLE users ADD COLUMN is_a_teacher BOOLEAN NOT NULL DEFAULT FALSE;
|
|
|
|
INSERT INTO lesson_package_types (id, name, description, package_type, price) VALUES ('single', 'Single Lesson', 'A single lesson purchased at the teacher''s price.', 'single', 0.00);
|
|
INSERT INTO lesson_package_types (id, name, description, package_type, price) VALUES ('single-free', 'Free Lesson', 'A free, single lesson.', 'single-free', 0.00);
|
|
INSERT INTO lesson_package_types (id, name, description, package_type, price) VALUES ('test-drive', 'Test Drive', 'Four reduced-price lessons which you can use to find that ideal teacher.', 'test-drive', 49.99);
|
|
|
|
|
|
CREATE TABLE lesson_booking_slots (
|
|
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
lesson_booking_id VARCHAR(64) REFERENCES lesson_bookings(id) NOT NULL,
|
|
slot_type VARCHAR(64) NOT NULL,
|
|
preferred_day DATE,
|
|
day_of_week INTEGER,
|
|
hour INTEGER,
|
|
minute INTEGER,
|
|
timezone VARCHAR NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
ALTER TABLE chat_messages ADD COLUMN target_user_id VARCHAR(64) REFERENCES users(id);
|
|
ALTER TABLE chat_messages ADD COLUMN lesson_booking_id VARCHAR(64) REFERENCES lesson_bookings(id);
|
|
ALTER TABLE users ADD COLUMN remaining_free_lessons INTEGER NOT NULL DEFAULT 1;
|
|
ALTER TABLE users ADD COLUMN stored_credit_card BOOLEAN NOT NULL DEFAULT FALSE;
|
|
ALTER TABLE users ADD COLUMN remaining_test_drives INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE users ADD COLUMN stripe_token VARCHAR(200);
|
|
ALTER TABLE users ADD COLUMN stripe_customer_id VARCHAR(200);
|
|
ALTER TABLE users ADD COLUMN stripe_zip_code VARCHAR(200);
|
|
ALTER TABLE sales ADD COLUMN stripe_charge_id VARCHAR(200);
|