Skip to content

Commit 03685b9

Browse files
authored
chore: DB 마이그레이션을 위한 Flyway 도입 (#24)
1 parent 8ca92cb commit 03685b9

File tree

3 files changed

+100
-1
lines changed

3 files changed

+100
-1
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ dependencies {
3333
implementation 'org.springframework.boot:spring-boot-starter-mail'
3434
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
3535
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
36+
implementation 'org.flywaydb:flyway-core'
37+
implementation 'org.flywaydb:flyway-mysql'
3638
compileOnly 'org.projectlombok:lombok'
3739
developmentOnly 'org.springframework.boot:spring-boot-devtools'
3840
runtimeOnly 'com.mysql:mysql-connector-j'

src/main/resources/application.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@ spring:
1515
username: ${DB_USERNAME}
1616
password: ${DB_PASSWORD}
1717
driver-class-name: com.mysql.cj.jdbc.Driver
18+
flyway:
19+
enabled: true
20+
baseline-on-migrate: true
21+
1822
jpa:
1923
show-sql: true
2024
hibernate:
21-
ddl-auto: create
25+
ddl-auto: validate
2226
properties:
2327
hibernate:
2428
dialect: org.hibernate.dialect.MySQLDialect
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
2+
CREATE TABLE `file_member` (
3+
`is_verified` bit(1) DEFAULT NULL,
4+
`created_at` datetime(6) DEFAULT NULL,
5+
`file_member_id` bigint NOT NULL AUTO_INCREMENT,
6+
`member_id` bigint DEFAULT NULL,
7+
`updated_at` datetime(6) DEFAULT NULL,
8+
`file_path` varchar(255) DEFAULT NULL,
9+
PRIMARY KEY (`file_member_id`)
10+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
11+
12+
CREATE TABLE `member` (
13+
`is_file_verified` bit(1) NOT NULL,
14+
`is_profile_registered` bit(1) NOT NULL,
15+
`is_university_verified` bit(1) NOT NULL,
16+
`created_at` datetime(6) DEFAULT NULL,
17+
`member_id` bigint NOT NULL AUTO_INCREMENT,
18+
`updated_at` datetime(6) DEFAULT NULL,
19+
`email` varchar(255) NOT NULL,
20+
`password` varchar(255) NOT NULL,
21+
`member_type` enum('ADMIN','MENTEE','MENTOR') DEFAULT NULL,
22+
PRIMARY KEY (`member_id`),
23+
UNIQUE KEY `UKmbmcqelty0fbrvxp1q58dn57t` (`email`)
24+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
25+
26+
CREATE TABLE `mentee` (
27+
`member_id` bigint DEFAULT NULL,
28+
`mentee_id` bigint NOT NULL AUTO_INCREMENT,
29+
`introduction` varchar(500) DEFAULT NULL,
30+
`file_name` varchar(255) NOT NULL,
31+
`file_path` varchar(255) NOT NULL,
32+
`major` varchar(255) DEFAULT NULL,
33+
`nickname` varchar(255) DEFAULT NULL,
34+
`school_name` varchar(255) DEFAULT NULL,
35+
PRIMARY KEY (`mentee_id`),
36+
UNIQUE KEY `UK1esk9x4yr6uocrt4obtej4wie` (`nickname`)
37+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
38+
39+
CREATE TABLE `mentor` (
40+
`end_time` time(6) DEFAULT NULL,
41+
`experience` int DEFAULT NULL,
42+
`start_time` time(6) DEFAULT NULL,
43+
`member_id` bigint DEFAULT NULL,
44+
`mentor_id` bigint NOT NULL AUTO_INCREMENT,
45+
`message` varchar(50) DEFAULT NULL,
46+
`introduction` varchar(500) DEFAULT NULL,
47+
`description` varchar(255) DEFAULT NULL,
48+
`file_name` varchar(255) NOT NULL,
49+
`file_path` varchar(255) NOT NULL,
50+
`major` varchar(255) DEFAULT NULL,
51+
`name` varchar(255) DEFAULT NULL,
52+
`nickname` varchar(255) DEFAULT NULL,
53+
`role` varchar(255) DEFAULT NULL,
54+
`school_name` varchar(255) DEFAULT NULL,
55+
`url` varchar(255) DEFAULT NULL,
56+
PRIMARY KEY (`mentor_id`)
57+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
58+
59+
CREATE TABLE `mentor_hashtags` (
60+
`mentor_id` bigint NOT NULL,
61+
`value` varchar(255) DEFAULT NULL,
62+
KEY `FKt3y0r48c7ok5lur8k568yt8kx` (`mentor_id`),
63+
CONSTRAINT `FKt3y0r48c7ok5lur8k568yt8kx` FOREIGN KEY (`mentor_id`) REFERENCES `mentor` (`mentor_id`)
64+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
65+
66+
CREATE TABLE `mentor_mentoring_fields` (
67+
`mentor_id` bigint NOT NULL,
68+
`mentoring_field` enum('INTERVIEW_PREPARATION','JOB_PREPARATION','PORTFOLIO','PRACTICAL_SKILLS') DEFAULT NULL,
69+
KEY `FK97ao36m77up6wdjhov0y93pc2` (`mentor_id`),
70+
CONSTRAINT `FK97ao36m77up6wdjhov0y93pc2` FOREIGN KEY (`mentor_id`) REFERENCES `mentor` (`mentor_id`)
71+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
72+
73+
CREATE TABLE `service_term` (
74+
`required` bit(1) DEFAULT NULL,
75+
`service_term_tag` varchar(255) NOT NULL,
76+
PRIMARY KEY (`service_term_tag`)
77+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
78+
79+
-- `service_term` 테이블에 3개 데이터 삽입
80+
INSERT INTO `service_term` (`service_term_tag`, `required`) VALUES
81+
('TERMS_OF_SERVICE', 1),
82+
('PRIVACY_POLICY', 1),
83+
('MARKETING_CONSENT', 0);
84+
CREATE TABLE `service_term_agreement` (
85+
`agreed` bit(1) DEFAULT NULL,
86+
`agreed_at` datetime(6) DEFAULT NULL,
87+
`created_at` datetime(6) DEFAULT NULL,
88+
`member_id` bigint NOT NULL,
89+
`updated_at` datetime(6) DEFAULT NULL,
90+
`tag` varchar(255) DEFAULT NULL,
91+
KEY `FKl7bp8w5ehipkfnre066psfv7x` (`member_id`),
92+
CONSTRAINT `FKl7bp8w5ehipkfnre066psfv7x` FOREIGN KEY (`member_id`) REFERENCES `member` (`member_id`)
93+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

0 commit comments

Comments
 (0)