Skip to content

Commit ecdd66d

Browse files
authored
✨ feat: 운영 환경 Flyway 적용 (#168)
1 parent 4e7ad27 commit ecdd66d

File tree

4 files changed

+105
-13
lines changed

4 files changed

+105
-13
lines changed

backend/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ dependencies {
3737

3838
/* DATABASE */
3939
runtimeOnly 'com.mysql:mysql-connector-j'
40+
implementation 'org.flywaydb:flyway-mysql'
41+
implementation 'org.flywaydb:flyway-core'
4042

4143
/* MONITORING */
4244
implementation 'io.micrometer:micrometer-registry-prometheus'

backend/src/main/resources/application.yml

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ spring:
1616
username: ${DB_USERNAME}
1717
password: ${DB_PASSWORD}
1818

19+
flyway:
20+
enabled: false
21+
1922
data:
2023
redis:
2124
host: ${REDIS_HOST}
@@ -78,6 +81,9 @@ spring:
7881
activate:
7982
on-profile: dev
8083

84+
flyway:
85+
enabled: false
86+
8187
management:
8288
server:
8389
port: ${ACTUATOR_PORT}
@@ -95,19 +101,23 @@ spring:
95101
activate:
96102
on-profile: prod
97103

98-
# TODO: Flyway 추가와 함께 설정이 필요한 항목들
99-
# sql:
100-
# init:
101-
# mode: never
102-
#
103-
# jpa:
104-
# hibernate:
105-
# ddl-auto: none
106-
#
107-
# properties:
108-
# hibernate:
109-
# show_sql: false
110-
# format_sql: false
104+
flyway:
105+
enabled: true
106+
locations: classpath:db/migration
107+
108+
sql:
109+
init:
110+
mode: never
111+
112+
jpa:
113+
defer-datasource-initialization: false
114+
hibernate:
115+
ddl-auto: none
116+
117+
properties:
118+
hibernate:
119+
show_sql: false
120+
format_sql: false
111121

112122
management:
113123
server:
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
CREATE TABLE admin (
2+
id BIGINT NOT NULL AUTO_INCREMENT,
3+
username VARCHAR(20) NOT NULL,
4+
password VARCHAR(20) NOT NULL,
5+
last_login DATETIME(6) NOT NULL,
6+
created_at DATETIME(6),
7+
updated_at DATETIME(6),
8+
PRIMARY KEY (id)
9+
);
10+
11+
CREATE TABLE `user` (
12+
id BIGINT NOT NULL AUTO_INCREMENT,
13+
nickname varchar(10),
14+
provider varchar(10) NOT NULL,
15+
provider_id varchar(20) NOT NULL,
16+
last_login DATETIME(6) NOT NULL,
17+
created_at DATETIME(6),
18+
updated_at DATETIME(6),
19+
PRIMARY KEY (id)
20+
);
21+
22+
CREATE TABLE stat (
23+
id BIGINT NOT NULL AUTO_INCREMENT,
24+
user_id BIGINT NOT NULL,
25+
total_games BIGINT NOT NULL,
26+
winning_games BIGINT NOT NULL,
27+
score BIGINT NOT NULL,
28+
created_at DATETIME(6),
29+
updated_at DATETIME(6),
30+
PRIMARY KEY (id)
31+
);
32+
33+
CREATE TABLE quiz (
34+
id BIGINT NOT NULL AUTO_INCREMENT,
35+
title VARCHAR(40) NOT NULL,
36+
quiz_type VARCHAR(10) NOT NULL,
37+
creator_id BIGINT,
38+
description VARCHAR(60) NOT NULL,
39+
thumbnail_url VARCHAR(255) NOT NULL,
40+
created_at DATETIME(6),
41+
updated_at DATETIME(6),
42+
PRIMARY KEY (id)
43+
);
44+
45+
CREATE TABLE question (
46+
id BIGINT NOT NULL AUTO_INCREMENT,
47+
quiz_id BIGINT NOT NULL,
48+
answer VARCHAR(40) NOT NULL,
49+
created_at DATETIME(6),
50+
updated_at DATETIME(6),
51+
PRIMARY KEY (id)
52+
);
53+
54+
CREATE TABLE text_question (
55+
id BIGINT NOT NULL AUTO_INCREMENT,
56+
question_id BIGINT NOT NULL,
57+
content varchar(40) NOT NULL,
58+
PRIMARY KEY (id)
59+
);
60+
61+
ALTER TABLE stat ADD CONSTRAINT UK_stat__user_id UNIQUE (user_id);
62+
63+
ALTER TABLE text_question ADD CONSTRAINT UK_text_question__question_id UNIQUE (question_id);
64+
65+
ALTER TABLE `user` ADD CONSTRAINT UK_user__nickname unique (nickname);
66+
67+
ALTER TABLE question ADD CONSTRAINT FK_question__quiz_id
68+
FOREIGN KEY (quiz_id) REFERENCES quiz (id);
69+
70+
ALTER TABLE quiz ADD CONSTRAINT FK_quiz__creator_id
71+
FOREIGN KEY (creator_id) REFERENCES `user` (id) ON DELETE SET NULL;
72+
73+
ALTER TABLE stat ADD CONSTRAINT FK_stat__user_id
74+
FOREIGN KEY (user_id) REFERENCES `user` (id);
75+
76+
ALTER TABLE text_question ADD CONSTRAINT FK_test_question__question_id
77+
FOREIGN KEY (question_id) REFERENCES question (id);

backend/src/test/resources/application.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ spring:
1515
init:
1616
mode: never
1717

18+
flyway:
19+
enabled: false
20+
1821
security:
1922
oauth2:
2023
client:

0 commit comments

Comments
 (0)