diff --git a/src/main/resources/db/migration/V1__init.sql b/src/main/resources/db/migration/V1__init.sql index a32ef6dc..02d93e9b 100644 --- a/src/main/resources/db/migration/V1__init.sql +++ b/src/main/resources/db/migration/V1__init.sql @@ -3,102 +3,95 @@ -- =========================================== -- 1. users -CREATE TABLE users -( - id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - email VARCHAR(255) NOT NULL UNIQUE, - nickname VARCHAR(50) NOT NULL, +CREATE TABLE users ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE, + nickname VARCHAR(50) NOT NULL, profile_image_url VARCHAR(500), - provider VARCHAR(20) NOT NULL, - provider_id VARCHAR(255) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + provider VARCHAR(20) NOT NULL, + provider_id VARCHAR(255) NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT uq_users_provider_provider_id UNIQUE (provider, provider_id) ); -- 2. rooms -CREATE TABLE rooms -( - id UUID PRIMARY KEY, - title VARCHAR(100) NOT NULL, +CREATE TABLE rooms ( + id UUID PRIMARY KEY, + title VARCHAR(100) NOT NULL, destination VARCHAR(200), start_date DATE, end_date DATE, - invite_code VARCHAR(50) NOT NULL UNIQUE, - created_by BIGINT NOT NULL, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL + invite_code VARCHAR(50) NOT NULL UNIQUE, + created_by BIGINT NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL ); -- 3. room_members -CREATE TABLE room_members -( +CREATE TABLE room_members ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - room_id UUID NOT NULL REFERENCES rooms (id) ON DELETE CASCADE, - user_id BIGINT NOT NULL REFERENCES users (id), - role VARCHAR(20) NOT NULL, - joined_at TIMESTAMP WITH TIME ZONE NOT NULL, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE, + user_id BIGINT NOT NULL REFERENCES users(id), + role VARCHAR(20) NOT NULL, + joined_at TIMESTAMP WITH TIME ZONE NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT uq_room_members_room_user UNIQUE (room_id, user_id) ); -- 4. bookmark_categories -CREATE TABLE bookmark_categories -( +CREATE TABLE bookmark_categories ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - room_id UUID NOT NULL REFERENCES rooms (id) ON DELETE CASCADE, - name VARCHAR(50) NOT NULL, - color_code VARCHAR(7) NOT NULL, + room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE, + name VARCHAR(50) NOT NULL, + color_code VARCHAR(7) NOT NULL, created_by BIGINT, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT uq_bookmark_categories_room_name UNIQUE (room_id, name), CONSTRAINT uq_bookmark_categories_id_room UNIQUE (id, room_id) ); CREATE INDEX idx_bookmark_categories_room_id ON bookmark_categories (room_id); -- 5. bookmarks -CREATE TABLE bookmarks -( - id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - room_id UUID NOT NULL REFERENCES rooms (id) ON DELETE CASCADE, - google_place_id VARCHAR(300) NOT NULL, - category_id BIGINT NOT NULL, - added_by BIGINT, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL, +CREATE TABLE bookmarks ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE, + google_place_id VARCHAR(300) NOT NULL, + category_id BIGINT NOT NULL, + added_by BIGINT, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT uq_bookmarks_room_place_category UNIQUE (room_id, google_place_id, category_id), CONSTRAINT fk_bookmarks_category FOREIGN KEY (category_id, room_id) - REFERENCES bookmark_categories (id, room_id) ON DELETE CASCADE + REFERENCES bookmark_categories(id, room_id) ON DELETE CASCADE ); CREATE INDEX idx_bookmarks_room_id ON bookmarks (room_id); CREATE INDEX idx_bookmarks_category_id ON bookmarks (category_id); CREATE INDEX idx_bookmarks_google_place_id ON bookmarks (google_place_id); -- 6. schedules -CREATE TABLE schedules -( +CREATE TABLE schedules ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - room_id UUID NOT NULL REFERENCES rooms (id) ON DELETE CASCADE, - day_number INTEGER NOT NULL, - date DATE NOT NULL, + room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE, + day_number INTEGER NOT NULL, + date DATE NOT NULL, version BIGINT, - created_at TIMESTAMP WITH TIME ZONE NOT NULL, - updated_at TIMESTAMP WITH TIME ZONE NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL, + updated_at TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT uq_schedules_room_day UNIQUE (room_id, day_number), CONSTRAINT uq_schedules_room_date UNIQUE (room_id, date) ); -- 7. schedule_items -CREATE TABLE schedule_items -( +CREATE TABLE schedule_items ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, - schedule_id BIGINT NOT NULL REFERENCES schedules (id) ON DELETE CASCADE, - google_place_id VARCHAR(300) NOT NULL, + schedule_id BIGINT NOT NULL REFERENCES schedules(id) ON DELETE CASCADE, + google_place_id VARCHAR(300) NOT NULL, start_time TIME, duration_minutes INTEGER, - order_index INTEGER NOT NULL, + order_index INTEGER NOT NULL, created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );