Skip to content

Commit 6bbd270

Browse files
authored
Merge pull request #597 from woowacourse-teams/develop
dev > prod
2 parents 0421e3c + 3d349ed commit 6bbd270

78 files changed

Lines changed: 4570 additions & 179 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

โ€Ž.github/workflows/backend-dev-admin-deploy.ymlโ€Ž

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -110,22 +110,6 @@ jobs:
110110
uses: actions/checkout@v4
111111

112112
- name: Deploy
113-
env:
114-
CSV_LINKS_COLLECTION_URL: ${{ secrets.CSV_LINKS_COLLECTION_URL }}
115-
DOMESTIC_ETC_IMAGE_URL: ${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
116-
OVERSEAS_ETC_IMAGE_URL: ${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
117-
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
118-
MYSQL_URL: ${{ secrets.MYSQL_URL }}
119-
MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }}
120-
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
121-
FLYWAY_USERNAME: ${{ secrets.FLYWAY_USERNAME }}
122-
FLYWAY_PASSWORD: ${{ secrets.FLYWAY_PASSWORD }}
123-
CSV_IMPORT_PASSWORD: ${{ secrets.CSV_IMPORT_PASSWORD }}
124-
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
125-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
126-
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
127-
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
128-
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
129113
run: |
130114
cd backend
131115
IMAGE_TAG="${{ github.event.inputs.image_tag || needs.build_and_test.outputs.image_tag }}"
@@ -137,21 +121,22 @@ jobs:
137121
IMAGE_NAME_ADMIN_PREFIX=${{ env.ADMIN_SERVICE_NAME }}
138122
SPRING_PROFILES_ACTIVE=${{ env.SPRING_PROFILES_ACTIVE }}
139123
NGINX_PORT=${{ env.NGINX_PORT }}
140-
CSV_LINKS_COLLECTION_URL=${CSV_LINKS_COLLECTION_URL}
141-
DOMESTIC_ETC_IMAGE_URL=${DOMESTIC_ETC_IMAGE_URL}
142-
OVERSEAS_ETC_IMAGE_URL=${OVERSEAS_ETC_IMAGE_URL}
143-
OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
144-
MYSQL_URL=${MYSQL_URL}
145-
MYSQL_USERNAME=${MYSQL_USERNAME}
146-
MYSQL_PASSWORD=${MYSQL_PASSWORD}
147-
FLYWAY_USERNAME=${FLYWAY_USERNAME}
148-
FLYWAY_PASSWORD=${FLYWAY_PASSWORD}
149-
CSV_IMPORT_PASSWORD=${CSV_IMPORT_PASSWORD}
150-
JWT_SECRET_KEY=${JWT_SECRET_KEY}
151-
GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
152-
KAKAO_API_KEY=${KAKAO_API_KEY}
153-
GOOGLE_API_KEY=${GOOGLE_API_KEY}
154-
YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
124+
CSV_LINKS_COLLECTION_URL=${{ secrets.CSV_LINKS_COLLECTION_URL }}
125+
DOMESTIC_ETC_IMAGE_URL=${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
126+
OVERSEAS_ETC_IMAGE_URL=${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
127+
OTEL_EXPORTER_OTLP_ENDPOINT=${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
128+
MYSQL_URL=${{ secrets.MYSQL_URL }}
129+
MYSQL_USERNAME=${{ secrets.MYSQL_USERNAME }}
130+
MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}
131+
FLYWAY_USERNAME=${{ secrets.FLYWAY_USERNAME }}
132+
FLYWAY_PASSWORD=${{ secrets.FLYWAY_PASSWORD }}
133+
CSV_IMPORT_PASSWORD=${{ secrets.CSV_IMPORT_PASSWORD }}
134+
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
135+
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
136+
KAKAO_API_KEY=${{ secrets.KAKAO_API_KEY }}
137+
GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
138+
YOUTUBE_API_KEY=${{ secrets.YOUTUBE_API_KEY }}
139+
INVITATION_JWT_SECRET_KEY=${{ secrets.INVITATION_JWT_SECRET_KEY }}
155140
EOF
156141
157142
if [ -f .env ]; then

โ€Ž.github/workflows/backend-dev-app-deploy.ymlโ€Ž

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -110,22 +110,6 @@ jobs:
110110
uses: actions/checkout@v4
111111

112112
- name: Deploy
113-
env:
114-
CSV_LINKS_COLLECTION_URL: ${{ secrets.CSV_LINKS_COLLECTION_URL }}
115-
DOMESTIC_ETC_IMAGE_URL: ${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
116-
OVERSEAS_ETC_IMAGE_URL: ${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
117-
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
118-
MYSQL_URL: ${{ secrets.MYSQL_URL }}
119-
MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }}
120-
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
121-
FLYWAY_USERNAME: ${{ secrets.FLYWAY_USERNAME }}
122-
FLYWAY_PASSWORD: ${{ secrets.FLYWAY_PASSWORD }}
123-
CSV_IMPORT_PASSWORD: ${{ secrets.CSV_IMPORT_PASSWORD }}
124-
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
125-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
126-
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
127-
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
128-
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
129113
run: |
130114
cd backend
131115
IMAGE_TAG="${{ github.event.inputs.image_tag || needs.build_and_test.outputs.image_tag }}"
@@ -137,21 +121,22 @@ jobs:
137121
IMAGE_NAME_ADMIN_PREFIX=${{ env.ADMIN_SERVICE_NAME }}
138122
SPRING_PROFILES_ACTIVE=${{ env.SPRING_PROFILES_ACTIVE }}
139123
NGINX_PORT=${{ env.NGINX_PORT }}
140-
CSV_LINKS_COLLECTION_URL=${CSV_LINKS_COLLECTION_URL}
141-
DOMESTIC_ETC_IMAGE_URL=${DOMESTIC_ETC_IMAGE_URL}
142-
OVERSEAS_ETC_IMAGE_URL=${OVERSEAS_ETC_IMAGE_URL}
143-
OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
144-
MYSQL_URL=${MYSQL_URL}
145-
MYSQL_USERNAME=${MYSQL_USERNAME}
146-
MYSQL_PASSWORD=${MYSQL_PASSWORD}
147-
FLYWAY_USERNAME=${FLYWAY_USERNAME}
148-
FLYWAY_PASSWORD=${FLYWAY_PASSWORD}
149-
CSV_IMPORT_PASSWORD=${CSV_IMPORT_PASSWORD}
150-
JWT_SECRET_KEY=${JWT_SECRET_KEY}
151-
GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
152-
KAKAO_API_KEY=${KAKAO_API_KEY}
153-
GOOGLE_API_KEY=${GOOGLE_API_KEY}
154-
YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
124+
CSV_LINKS_COLLECTION_URL=${{ secrets.CSV_LINKS_COLLECTION_URL }}
125+
DOMESTIC_ETC_IMAGE_URL=${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
126+
OVERSEAS_ETC_IMAGE_URL=${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
127+
OTEL_EXPORTER_OTLP_ENDPOINT=${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
128+
MYSQL_URL=${{ secrets.MYSQL_URL }}
129+
MYSQL_USERNAME=${{ secrets.MYSQL_USERNAME }}
130+
MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}
131+
FLYWAY_USERNAME=${{ secrets.FLYWAY_USERNAME }}
132+
FLYWAY_PASSWORD=${{ secrets.FLYWAY_PASSWORD }}
133+
CSV_IMPORT_PASSWORD=${{ secrets.CSV_IMPORT_PASSWORD }}
134+
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
135+
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
136+
KAKAO_API_KEY=${{ secrets.KAKAO_API_KEY }}
137+
GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
138+
YOUTUBE_API_KEY=${{ secrets.YOUTUBE_API_KEY }}
139+
INVITATION_JWT_SECRET_KEY=${{ secrets.INVITATION_JWT_SECRET_KEY }}
155140
EOF
156141
157142
if [ -f .env ]; then

โ€Ž.github/workflows/backend-prod-admin-deploy.ymlโ€Ž

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,6 @@ jobs:
104104
uses: actions/checkout@v4
105105

106106
- name: Deploy
107-
env:
108-
CSV_LINKS_COLLECTION_URL: ${{ secrets.CSV_LINKS_COLLECTION_URL }}
109-
DOMESTIC_ETC_IMAGE_URL: ${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
110-
OVERSEAS_ETC_IMAGE_URL: ${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
111-
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
112-
MYSQL_URL: ${{ secrets.MYSQL_URL }}
113-
MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }}
114-
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
115-
FLYWAY_USERNAME: ${{ secrets.FLYWAY_USERNAME }}
116-
FLYWAY_PASSWORD: ${{ secrets.FLYWAY_PASSWORD }}
117-
CSV_IMPORT_PASSWORD: ${{ secrets.CSV_IMPORT_PASSWORD }}
118-
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
119-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
120-
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
121-
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
122-
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
123107
run: |
124108
cd backend
125109
IMAGE_TAG="${{ needs.build_and_test.outputs.image_tag }}"
@@ -131,21 +115,22 @@ jobs:
131115
IMAGE_NAME_ADMIN_PREFIX=${{ env.ADMIN_SERVICE_NAME }}
132116
SPRING_PROFILES_ACTIVE=${{ env.SPRING_PROFILES_ACTIVE }}
133117
NGINX_PORT=${{ env.NGINX_PORT }}
134-
CSV_LINKS_COLLECTION_URL=${CSV_LINKS_COLLECTION_URL}
135-
DOMESTIC_ETC_IMAGE_URL=${DOMESTIC_ETC_IMAGE_URL}
136-
OVERSEAS_ETC_IMAGE_URL=${OVERSEAS_ETC_IMAGE_URL}
137-
OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
138-
MYSQL_URL=${MYSQL_URL}
139-
MYSQL_USERNAME=${MYSQL_USERNAME}
140-
MYSQL_PASSWORD=${MYSQL_PASSWORD}
141-
FLYWAY_USERNAME=${FLYWAY_USERNAME}
142-
FLYWAY_PASSWORD=${FLYWAY_PASSWORD}
143-
CSV_IMPORT_PASSWORD=${CSV_IMPORT_PASSWORD}
144-
JWT_SECRET_KEY=${JWT_SECRET_KEY}
145-
GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
146-
KAKAO_API_KEY=${KAKAO_API_KEY}
147-
GOOGLE_API_KEY=${GOOGLE_API_KEY}
148-
YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
118+
CSV_LINKS_COLLECTION_URL=${{ secrets.CSV_LINKS_COLLECTION_URL }}
119+
DOMESTIC_ETC_IMAGE_URL=${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
120+
OVERSEAS_ETC_IMAGE_URL=${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
121+
OTEL_EXPORTER_OTLP_ENDPOINT=${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
122+
MYSQL_URL=${{ secrets.MYSQL_URL }}
123+
MYSQL_USERNAME=${{ secrets.MYSQL_USERNAME }}
124+
MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}
125+
FLYWAY_USERNAME=${{ secrets.FLYWAY_USERNAME }}
126+
FLYWAY_PASSWORD=${{ secrets.FLYWAY_PASSWORD }}
127+
CSV_IMPORT_PASSWORD=${{ secrets.CSV_IMPORT_PASSWORD }}
128+
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
129+
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
130+
KAKAO_API_KEY=${{ secrets.KAKAO_API_KEY }}
131+
GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
132+
YOUTUBE_API_KEY=${{ secrets.YOUTUBE_API_KEY }}
133+
INVITATION_JWT_SECRET_KEY=${{ secrets.INVITATION_JWT_SECRET_KEY }}
149134
EOF
150135
151136
if [ -f .env ]; then

โ€Ž.github/workflows/backend-prod-app-deploy.ymlโ€Ž

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,6 @@ jobs:
104104
uses: actions/checkout@v4
105105

106106
- name: Deploy
107-
env:
108-
CSV_LINKS_COLLECTION_URL: ${{ secrets.CSV_LINKS_COLLECTION_URL }}
109-
DOMESTIC_ETC_IMAGE_URL: ${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
110-
OVERSEAS_ETC_IMAGE_URL: ${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
111-
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
112-
MYSQL_URL: ${{ secrets.MYSQL_URL }}
113-
MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }}
114-
MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }}
115-
FLYWAY_USERNAME: ${{ secrets.FLYWAY_USERNAME }}
116-
FLYWAY_PASSWORD: ${{ secrets.FLYWAY_PASSWORD }}
117-
CSV_IMPORT_PASSWORD: ${{ secrets.CSV_IMPORT_PASSWORD }}
118-
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
119-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
120-
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
121-
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
122-
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
123107
run: |
124108
cd backend
125109
IMAGE_TAG="${{ needs.build_and_test.outputs.image_tag }}"
@@ -131,21 +115,22 @@ jobs:
131115
IMAGE_NAME_ADMIN_PREFIX=${{ env.ADMIN_SERVICE_NAME }}
132116
SPRING_PROFILES_ACTIVE=${{ env.SPRING_PROFILES_ACTIVE }}
133117
NGINX_PORT=${{ env.NGINX_PORT }}
134-
CSV_LINKS_COLLECTION_URL=${CSV_LINKS_COLLECTION_URL}
135-
DOMESTIC_ETC_IMAGE_URL=${DOMESTIC_ETC_IMAGE_URL}
136-
OVERSEAS_ETC_IMAGE_URL=${OVERSEAS_ETC_IMAGE_URL}
137-
OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
138-
MYSQL_URL=${MYSQL_URL}
139-
MYSQL_USERNAME=${MYSQL_USERNAME}
140-
MYSQL_PASSWORD=${MYSQL_PASSWORD}
141-
FLYWAY_USERNAME=${FLYWAY_USERNAME}
142-
FLYWAY_PASSWORD=${FLYWAY_PASSWORD}
143-
CSV_IMPORT_PASSWORD=${CSV_IMPORT_PASSWORD}
144-
JWT_SECRET_KEY=${JWT_SECRET_KEY}
145-
GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
146-
KAKAO_API_KEY=${KAKAO_API_KEY}
147-
GOOGLE_API_KEY=${GOOGLE_API_KEY}
148-
YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
118+
CSV_LINKS_COLLECTION_URL=${{ secrets.CSV_LINKS_COLLECTION_URL }}
119+
DOMESTIC_ETC_IMAGE_URL=${{ secrets.DOMESTIC_ETC_IMAGE_URL }}
120+
OVERSEAS_ETC_IMAGE_URL=${{ secrets.OVERSEAS_ETC_IMAGE_URL }}
121+
OTEL_EXPORTER_OTLP_ENDPOINT=${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
122+
MYSQL_URL=${{ secrets.MYSQL_URL }}
123+
MYSQL_USERNAME=${{ secrets.MYSQL_USERNAME }}
124+
MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}
125+
FLYWAY_USERNAME=${{ secrets.FLYWAY_USERNAME }}
126+
FLYWAY_PASSWORD=${{ secrets.FLYWAY_PASSWORD }}
127+
CSV_IMPORT_PASSWORD=${{ secrets.CSV_IMPORT_PASSWORD }}
128+
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
129+
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
130+
KAKAO_API_KEY=${{ secrets.KAKAO_API_KEY }}
131+
GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY }}
132+
YOUTUBE_API_KEY=${{ secrets.YOUTUBE_API_KEY }}
133+
INVITATION_JWT_SECRET_KEY=${{ secrets.INVITATION_JWT_SECRET_KEY }}
149134
EOF
150135
151136
if [ -f .env ]; then

โ€Žandroid/app/src/main/java/com/on/turip/TuripApplication.ktโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class TuripApplication : Application() {
3333
FirebaseInstallationsInitializer(userStorageRepository)
3434
.setupFirebaseInstallationId()
3535

36+
fidProvider.init()
37+
3638
FirebaseCrashlytics.getInstance().setUserId(fidProvider.cachedFid)
3739
}
3840

โ€Žandroid/app/src/main/java/com/on/turip/ui/compose/trip/TripDetailScreen.ktโ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ private fun TripDetailScreenContent(
333333
)
334334
}
335335

336-
items(items = uiState.places, key = { it.id }) { place ->
336+
items(items = uiState.places, key = { it.timeLine }) { place ->
337337
PlaceItem(
338338
placeModel = place,
339339
onTimeLineClick = onTimeLineClick,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:id="@+id/main"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent"
8+
tools:context=".ui.login.LoginActivity">
9+
10+
</androidx.constraintlayout.widget.ConstraintLayout>

โ€Žandroid/gradle/libs.versions.tomlโ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22
# App Version
3-
versionName = "1.3.4"
4-
versionCode = "136"
3+
versionName = "1.3.5"
4+
versionCode = "137"
55

66
# Gradle Plugin
77
agp = "8.9.0"

โ€Žbackend/docker-compose.ymlโ€Ž

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,8 @@ services:
1717
restart: always
1818
expose:
1919
- "8080"
20-
environment: &app_env
21-
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev}
22-
SERVER_PORT: 8080
23-
OTEL_SERVICE_NAME: turip-api
24-
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT}
25-
OTEL_RESOURCE_ATTRIBUTES: env=${SPRING_PROFILES_ACTIVE:-dev}
26-
OTEL_INSTRUMENTATION_LOGBACK_APPENDER_EXPERIMENTAL_LOG_ATTRIBUTES: "true"
27-
CSV_LINKS_COLLECTION_URL: ${CSV_LINKS_COLLECTION_URL}
28-
DOMESTIC_ETC_IMAGE_URL: ${DOMESTIC_ETC_IMAGE_URL}
29-
OVERSEAS_ETC_IMAGE_URL: ${OVERSEAS_ETC_IMAGE_URL}
30-
MYSQL_URL: ${MYSQL_URL}
31-
MYSQL_USERNAME: ${MYSQL_USERNAME}
32-
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
33-
FLYWAY_USERNAME: ${FLYWAY_USERNAME}
34-
FLYWAY_PASSWORD: ${FLYWAY_PASSWORD}
35-
CSV_IMPORT_PASSWORD: ${CSV_IMPORT_PASSWORD}
36-
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
37-
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
38-
GOOGLE_API_KEY: ${GOOGLE_API_KEY}
39-
KAKAO_API_KEY: ${KAKAO_API_KEY}
40-
YOUTUBE_API_KEY: ${YOUTUBE_API_KEY}
20+
env_file:
21+
- .env
4122
networks:
4223
- turip-network
4324
volumes:
@@ -49,7 +30,8 @@ services:
4930
restart: always
5031
expose:
5132
- "8080"
52-
environment: *app_env
33+
env_file:
34+
- .env
5335
networks:
5436
- turip-network
5537
volumes:
@@ -61,8 +43,9 @@ services:
6143
restart: always
6244
expose:
6345
- "8081"
46+
env_file:
47+
- .env
6448
environment:
65-
<<: *app_env
6649
SERVER_PORT: 8081
6750
OTEL_SERVICE_NAME: turip-admin
6851
networks:
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package turip.account.controller;
2+
3+
import io.swagger.v3.oas.annotations.Operation;
4+
import io.swagger.v3.oas.annotations.Parameter;
5+
import io.swagger.v3.oas.annotations.media.Content;
6+
import io.swagger.v3.oas.annotations.media.ExampleObject;
7+
import io.swagger.v3.oas.annotations.media.Schema;
8+
import io.swagger.v3.oas.annotations.responses.ApiResponse;
9+
import io.swagger.v3.oas.annotations.responses.ApiResponses;
10+
import io.swagger.v3.oas.annotations.tags.Tag;
11+
import lombok.RequiredArgsConstructor;
12+
import org.springframework.http.ResponseEntity;
13+
import org.springframework.web.bind.annotation.DeleteMapping;
14+
import org.springframework.web.bind.annotation.RequestMapping;
15+
import org.springframework.web.bind.annotation.RestController;
16+
import turip.account.domain.Guest;
17+
import turip.account.service.GuestService;
18+
import turip.auth.resolver.AuthGuest;
19+
import turip.common.exception.ErrorResponse;
20+
21+
@RestController
22+
@RequiredArgsConstructor
23+
@RequestMapping("/guests")
24+
@Tag(name = "Guest", description = "๊ฒŒ์ŠคํŠธ API")
25+
public class GuestController {
26+
27+
private final GuestService guestService;
28+
29+
@Operation(
30+
summary = "๊ฒŒ์ŠคํŠธ ํƒˆํ‡ด api",
31+
description = "๊ฒŒ์ŠคํŠธ๋ฅผ ์‚ญ์ œํ•œ๋‹ค."
32+
)
33+
@ApiResponses(value = {
34+
@ApiResponse(
35+
responseCode = "204",
36+
description = "์„ฑ๊ณต ์˜ˆ์‹œ"
37+
),
38+
@ApiResponse(
39+
responseCode = "400",
40+
description = "์‹คํŒจ ์˜ˆ์‹œ",
41+
content = @Content(
42+
mediaType = "application/json",
43+
schema = @Schema(implementation = ErrorResponse.class),
44+
examples = @ExampleObject(
45+
name = "guest not found",
46+
summary = "์š”์ฒญ ํ—ค๋”์— device-fid๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ",
47+
value = """
48+
{
49+
"tag": "DEVICE_FID_REQUIRED",
50+
"message": "์š”์ฒญ ํ—ค๋”์— device_fid๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
51+
}
52+
"""
53+
)
54+
)
55+
)
56+
})
57+
@DeleteMapping("/me")
58+
public ResponseEntity<Void> delete(@Parameter(hidden = true) @AuthGuest Guest guest) {
59+
guestService.delete(guest);
60+
return ResponseEntity.noContent().build();
61+
}
62+
}

0 commit comments

Comments
ย (0)