Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 47 additions & 54 deletions src/main/resources/db/migration/V1__init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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
);
Expand Down