From e279711bab3e32ed1b7aa4f113d16fb49e7d49e7 Mon Sep 17 00:00:00 2001 From: Chaejongin12 Date: Wed, 26 Jun 2024 17:41:17 +0900 Subject: [PATCH 01/24] =?UTF-8?q?:sparkles:=20::=20checkout=EC=A0=84=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=EB=AC=BC=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :: checkout전 작업물 커밋 --- .../src/main/kotlin/enumdata/MissionStatus.kt | 7 ++++++ .../student/UploadProfileImageRequest.kt | 7 ------ .../request/user/ApproveRequestModel.kt | 5 ---- .../remote/request/user/ScoreRequestModel.kt | 5 ---- .../student/UploadProfileImageResponse.kt | 5 ---- .../user/DetailSolveMissionResponseModel.kt | 8 ------- .../GetRequestSignUpTeacherResponseModel.kt | 10 -------- .../com/stackknowledge/api/MissionAPI.kt | 24 +++++++++++++++++++ .../request/mission/CreateMissionRequest.kt | 7 ++++++ .../mission/GetMissionListResponse.kt | 19 +++++++++++++++ 10 files changed, 57 insertions(+), 40 deletions(-) create mode 100644 core/model/src/main/kotlin/enumdata/MissionStatus.kt create mode 100644 core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt create mode 100644 core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt create mode 100644 core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/GetMissionListResponse.kt diff --git a/core/model/src/main/kotlin/enumdata/MissionStatus.kt b/core/model/src/main/kotlin/enumdata/MissionStatus.kt new file mode 100644 index 00000000..9fe37c1b --- /dev/null +++ b/core/model/src/main/kotlin/enumdata/MissionStatus.kt @@ -0,0 +1,7 @@ +package enumdata + +enum class MissionStatus { + CLOSED, // Mission을 풀 수 없는 상태 + OPENED, // Mission을 풀 수 있는 상태 + AVAILABLE_OPEN, // Mission을 내일 풀 수 있는 상태 +} \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt b/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt index bf8b5334..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt +++ b/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt @@ -1,7 +0,0 @@ -package remote.request.student - -import okhttp3.MultipartBody - -data class UploadProfileImageRequest( - val image: MultipartBody.Part -) diff --git a/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt b/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt index 84fe8a43..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt +++ b/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt @@ -1,5 +0,0 @@ -package remote.request.user - -data class ApproveRequestModel( - val approveStatus: String, -) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt b/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt index e087666b..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt +++ b/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt @@ -1,5 +0,0 @@ -package remote.request.user - -data class ScoreRequestModel( - val solveStatus: String, -) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt b/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt index 812d948a..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt +++ b/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt @@ -1,5 +0,0 @@ -package remote.response.student - -data class UploadProfileImageResponse( - val fileName: String, -) diff --git a/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt b/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt index 6e7231a3..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt @@ -1,8 +0,0 @@ -package remote.response.user - -import java.util.UUID -data class DetailSolveMissionResponseModel( - val solveId: UUID, - val title: String, - val solution: String, -) diff --git a/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt b/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt index f75edc12..e69de29b 100644 --- a/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt @@ -1,10 +0,0 @@ -package remote.response.user - -import kotlinx.datetime.LocalDateTime -import java.util.UUID - -data class GetRequestSignUpTeacherResponseModel( - val userId: UUID, - val name: String, - val createdAt: LocalDateTime, -) diff --git a/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt new file mode 100644 index 00000000..e687777a --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt @@ -0,0 +1,24 @@ +package com.stackknowledge.api + +import com.stackknowledge.dto.request.mission.CreateMissionRequest +import com.stackknowledge.dto.response.mission.GetMissionListResponse +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path +import java.util.UUID + +interface MissionAPI { + @GET("mission") + suspend fun getMissionList(): List + + @GET("mission/{mission_id}") + suspend fun getMissionDetail( + @Path("mission_id") missionId: UUID, + ) + + @POST("mission") + suspend fun createMission( + @Body body: CreateMissionRequest, + ) +} \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt new file mode 100644 index 00000000..aa6ccb88 --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt @@ -0,0 +1,7 @@ +package com.stackknowledge.dto.request.mission + +data class CreateMissionRequest( + val title: String, + val content: String, + val timeLimit: Int, +) diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/GetMissionListResponse.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/GetMissionListResponse.kt new file mode 100644 index 00000000..0935e52a --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/GetMissionListResponse.kt @@ -0,0 +1,19 @@ +package com.stackknowledge.dto.response.mission + +import com.stackknowledge.dto.user.User +import enumdata.MissionStatus +import java.util.UUID + +data class GetMissionListResponse( + val id: UUID, + val title: String, + val point: Int, + val missionStatus: MissionStatus, + val user: User, +) { + data class User( + val id: UUID, + val name: String, + val profileImage: String?, + ) +} From 0255f536c8916352a14430b89474b6f9284d14ae Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:09:35 +0900 Subject: [PATCH 02/24] :sparkles: :: add mission Repository --- .../com/stackknowledge/di/RepositoryModule.kt | 10 +++++++- .../repository/mission/MissionRepository.kt | 15 +++++++++++ .../mission/MissionRepositoryImpl.kt | 25 +++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt create mode 100644 core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt diff --git a/core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt b/core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt index 23d9686a..be5dfa45 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt @@ -1,9 +1,17 @@ package com.stackknowledge.di +import com.stackknowledge.repository.mission.MissionRepository +import com.stackknowledge.repository.mission.MissionRepositoryImpl +import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) -abstract class RepositoryModule {} \ No newline at end of file +abstract class RepositoryModule { + @Binds + abstract fun bindMissionRepository( + missionRepositoryImpl: MissionRepositoryImpl + ): MissionRepository +} \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt new file mode 100644 index 00000000..9a8825b7 --- /dev/null +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt @@ -0,0 +1,15 @@ +package com.stackknowledge.repository.mission + +import kotlinx.coroutines.flow.Flow +import request.mission.CreateMissionRequest +import request.mission.DetailMissionRequest +import response.mission.DetailMissionResponse +import response.mission.MissionResponse + +interface MissionRepository { + suspend fun getMission(): Flow + + suspend fun detailMission(missionId: DetailMissionRequest): Flow + + suspend fun createMission(body: CreateMissionRequest): Flow +} \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt new file mode 100644 index 00000000..3186ff1d --- /dev/null +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt @@ -0,0 +1,25 @@ +package com.stackknowledge.repository.mission + +import com.stackknowledge.datasource.mission.MissionDataSource +import kotlinx.coroutines.flow.Flow +import request.mission.CreateMissionRequest +import request.mission.DetailMissionRequest +import response.mission.DetailMissionResponse +import response.mission.MissionResponse +import javax.inject.Inject + +class MissionRepositoryImpl @Inject constructor( + private val missionDataSource: MissionDataSource +): MissionRepository { + override suspend fun getMission(): Flow { + return missionDataSource.getMission() + } + + override suspend fun detailMission(missionId: DetailMissionRequest): Flow { + return missionDataSource.detailMission(missionId = missionId) + } + + override suspend fun createMission(body: CreateMissionRequest): Flow { + return missionDataSource.createMission(body = body) + } +} \ No newline at end of file From 3169b3ad31181223954698c0faa3fb4a55b5f358 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:09:53 +0900 Subject: [PATCH 03/24] :sparkles: :: add mission UseCase --- .../src/main/kotlin/com/stackknowledge/.gitkeep | 0 .../stackknowledge/misson/CreateMissionUseCase.kt | 13 +++++++++++++ .../stackknowledge/misson/DetailMissionUseCase.kt | 13 +++++++++++++ .../com/stackknowledge/misson/GetMissionUseCase.kt | 12 ++++++++++++ 4 files changed, 38 insertions(+) delete mode 100644 core/domain/src/main/kotlin/com/stackknowledge/.gitkeep create mode 100644 core/domain/src/main/kotlin/com/stackknowledge/misson/CreateMissionUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/stackknowledge/misson/DetailMissionUseCase.kt create mode 100644 core/domain/src/main/kotlin/com/stackknowledge/misson/GetMissionUseCase.kt diff --git a/core/domain/src/main/kotlin/com/stackknowledge/.gitkeep b/core/domain/src/main/kotlin/com/stackknowledge/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/core/domain/src/main/kotlin/com/stackknowledge/misson/CreateMissionUseCase.kt b/core/domain/src/main/kotlin/com/stackknowledge/misson/CreateMissionUseCase.kt new file mode 100644 index 00000000..190a7108 --- /dev/null +++ b/core/domain/src/main/kotlin/com/stackknowledge/misson/CreateMissionUseCase.kt @@ -0,0 +1,13 @@ +package com.stackknowledge.misson + +import com.stackknowledge.repository.mission.MissionRepository +import request.mission.CreateMissionRequest +import javax.inject.Inject + +class CreateMissionUseCase @Inject constructor( + private val missionRepository: MissionRepository +) { + suspend operator fun invoke(body: CreateMissionRequest) = runCatching { + missionRepository.createMission(body = body) + } +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/stackknowledge/misson/DetailMissionUseCase.kt b/core/domain/src/main/kotlin/com/stackknowledge/misson/DetailMissionUseCase.kt new file mode 100644 index 00000000..af78ab36 --- /dev/null +++ b/core/domain/src/main/kotlin/com/stackknowledge/misson/DetailMissionUseCase.kt @@ -0,0 +1,13 @@ +package com.stackknowledge.misson + +import com.stackknowledge.repository.mission.MissionRepository +import request.mission.DetailMissionRequest +import javax.inject.Inject + +class DetailMissionUseCase @Inject constructor( + private val missionRepository: MissionRepository +) { + suspend operator fun invoke(missionId: DetailMissionRequest) = runCatching { + missionRepository.detailMission(missionId = missionId) + } +} \ No newline at end of file diff --git a/core/domain/src/main/kotlin/com/stackknowledge/misson/GetMissionUseCase.kt b/core/domain/src/main/kotlin/com/stackknowledge/misson/GetMissionUseCase.kt new file mode 100644 index 00000000..bc55756c --- /dev/null +++ b/core/domain/src/main/kotlin/com/stackknowledge/misson/GetMissionUseCase.kt @@ -0,0 +1,12 @@ +package com.stackknowledge.misson + +import com.stackknowledge.repository.mission.MissionRepository +import javax.inject.Inject + +class GetMissionUseCase @Inject constructor( + private val missionRepository: MissionRepository +) { + suspend operator fun invoke() = runCatching { + missionRepository.getMission() + } +} \ No newline at end of file From 4f49e55b85794d58e46d833866dc03c495fa27c8 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:11:33 +0900 Subject: [PATCH 04/24] =?UTF-8?q?:sparkles:=20::=20Mission=20Request=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/request/mission/CreateMissionRequest.kt | 11 +++++++++++ .../kotlin/request/mission/DetailMissionRequest.kt | 10 ++++++++++ 2 files changed, 21 insertions(+) create mode 100644 core/model/src/main/kotlin/request/mission/CreateMissionRequest.kt create mode 100644 core/model/src/main/kotlin/request/mission/DetailMissionRequest.kt diff --git a/core/model/src/main/kotlin/request/mission/CreateMissionRequest.kt b/core/model/src/main/kotlin/request/mission/CreateMissionRequest.kt new file mode 100644 index 00000000..a92bf8d3 --- /dev/null +++ b/core/model/src/main/kotlin/request/mission/CreateMissionRequest.kt @@ -0,0 +1,11 @@ +package request.mission + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) +data class CreateMissionRequest( + @Json(name = "title") val title: String, + @Json(name = "content") val content: String, + @Json(name = "timeLimit") val timeLimit: Int, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/request/mission/DetailMissionRequest.kt b/core/model/src/main/kotlin/request/mission/DetailMissionRequest.kt new file mode 100644 index 00000000..63f3110a --- /dev/null +++ b/core/model/src/main/kotlin/request/mission/DetailMissionRequest.kt @@ -0,0 +1,10 @@ +package request.mission + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass +import java.util.UUID + +@JsonClass(generateAdapter = true) +data class DetailMissionRequest( + @Json(name = "mission_id") val missionId: UUID, +) \ No newline at end of file From b6349953fa07a3df6e5372fc5cc3e22823b5ad8b Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:11:59 +0900 Subject: [PATCH 05/24] =?UTF-8?q?:sparkles:=20::=20Mission=20Response=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/mission/DetailMissionResponse.kt | 11 ++++++++++ .../response/mission/MissionResponse.kt | 21 +++++++++++++++++++ .../main/kotlin/response/user/UserResponse.kt | 12 +++++++++++ 3 files changed, 44 insertions(+) create mode 100644 core/model/src/main/kotlin/response/mission/DetailMissionResponse.kt create mode 100644 core/model/src/main/kotlin/response/mission/MissionResponse.kt create mode 100644 core/model/src/main/kotlin/response/user/UserResponse.kt diff --git a/core/model/src/main/kotlin/response/mission/DetailMissionResponse.kt b/core/model/src/main/kotlin/response/mission/DetailMissionResponse.kt new file mode 100644 index 00000000..f2d75222 --- /dev/null +++ b/core/model/src/main/kotlin/response/mission/DetailMissionResponse.kt @@ -0,0 +1,11 @@ +package response.mission + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) +data class DetailMissionResponse( + @Json(name = "title") val title : String, + @Json(name = "content") val content : String, + @Json(name = "timeLimit") val timeLimit: Int, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/response/mission/MissionResponse.kt b/core/model/src/main/kotlin/response/mission/MissionResponse.kt new file mode 100644 index 00000000..6dce4b9f --- /dev/null +++ b/core/model/src/main/kotlin/response/mission/MissionResponse.kt @@ -0,0 +1,21 @@ +package response.mission + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass +import enumdatatype.MissionStatus +import response.user.UserResponse +import java.util.UUID + +@JsonClass(generateAdapter = true) +data class MissionResponse( + @Json(name = "body") val missions : Missions, +) + +@JsonClass(generateAdapter = true) +data class Missions( + @Json(name = "id") val id : UUID, + @Json(name = "title") val title : String, + @Json(name = "point") val point : Int, + @Json(name = "missionStatus") val missionStatus : MissionStatus, + @Json(name = "user") val user : UserResponse, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/response/user/UserResponse.kt b/core/model/src/main/kotlin/response/user/UserResponse.kt new file mode 100644 index 00000000..0d7792eb --- /dev/null +++ b/core/model/src/main/kotlin/response/user/UserResponse.kt @@ -0,0 +1,12 @@ +package response.user + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass +import java.util.UUID + +@JsonClass(generateAdapter = true) +data class UserResponse( + @Json(name = "id") val id : UUID, + @Json(name = "name") val name: String, + @Json(name = "profileImage") val profileImage: String, +) \ No newline at end of file From 0b29e245034b1b983bd87b23b9828ca2e57da7da Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:12:29 +0900 Subject: [PATCH 06/24] :sparkles: :: add enum class MissionStatus --- core/model/src/main/kotlin/enumdatatype/MissionStatus.kt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 core/model/src/main/kotlin/enumdatatype/MissionStatus.kt diff --git a/core/model/src/main/kotlin/enumdatatype/MissionStatus.kt b/core/model/src/main/kotlin/enumdatatype/MissionStatus.kt new file mode 100644 index 00000000..842feaed --- /dev/null +++ b/core/model/src/main/kotlin/enumdatatype/MissionStatus.kt @@ -0,0 +1,7 @@ +package enumdatatype + +enum class MissionStatus { + CLOSED, + OPENED, + AVAILABLE_OPEN, +} \ No newline at end of file From a463492c684eae48df163831d8eeb21361b88ce3 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:12:48 +0900 Subject: [PATCH 07/24] =?UTF-8?q?:sparkles:=20::=20Mission=20API=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/stackknowledge/api/MissionAPI.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt diff --git a/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt new file mode 100644 index 00000000..2ffe6f96 --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt @@ -0,0 +1,25 @@ +package com.stackknowledge.api + +import request.mission.CreateMissionRequest +import request.mission.DetailMissionRequest +import response.mission.DetailMissionResponse +import response.mission.MissionResponse +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path + +interface MissionAPI { + @GET("/mission") + suspend fun getMission(): MissionResponse + + @GET("/mission/{mission_id}") + suspend fun getDetailMission( + @Path("mission_id") missionId: DetailMissionRequest, + ): DetailMissionResponse + + @POST("/mission") + suspend fun createMission( + @Body body: CreateMissionRequest + ) +} \ No newline at end of file From cba0c9724458376c747eebe0bc551feb30793d2c Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:13:02 +0900 Subject: [PATCH 08/24] =?UTF-8?q?:sparkles:=20::=20Mission=20DataSource=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/mission/MissionDataSource.kt | 15 +++++++ .../mission/MissionDataSourceImpl.kt | 41 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt create mode 100644 core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt new file mode 100644 index 00000000..7094873c --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt @@ -0,0 +1,15 @@ +package com.stackknowledge.datasource.mission + +import kotlinx.coroutines.flow.Flow +import request.mission.CreateMissionRequest +import request.mission.DetailMissionRequest +import response.mission.DetailMissionResponse +import response.mission.MissionResponse + +interface MissionDataSource { + suspend fun getMission(): Flow + + suspend fun detailMission(missionId: DetailMissionRequest): Flow + + suspend fun createMission(body: CreateMissionRequest): Flow +} \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt new file mode 100644 index 00000000..be316d47 --- /dev/null +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt @@ -0,0 +1,41 @@ +package com.stackknowledge.datasource.mission + +import com.stackknowledge.api.MissionAPI +import com.stackknowledge.util.StackKnowledgeApiHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn +import request.mission.CreateMissionRequest +import request.mission.DetailMissionRequest +import response.mission.DetailMissionResponse +import response.mission.MissionResponse +import javax.inject.Inject + +class MissionDataSourceImpl @Inject constructor( + private val missionAPI: MissionAPI +) : MissionDataSource { + override suspend fun getMission(): Flow = flow { + emit( + StackKnowledgeApiHandler() + .httpRequest { missionAPI.getMission() } + .sendRequest() + ) + }.flowOn(Dispatchers.IO) + + override suspend fun detailMission(missionId: DetailMissionRequest): Flow = flow { + emit( + StackKnowledgeApiHandler() + .httpRequest { missionAPI.getDetailMission(missionId = missionId) } + .sendRequest() + ) + }.flowOn(Dispatchers.IO) + + override suspend fun createMission(body: CreateMissionRequest): Flow = flow { + emit( + StackKnowledgeApiHandler() + .httpRequest { missionAPI.createMission(body = body) } + .sendRequest() + ) + }.flowOn(Dispatchers.IO) +} \ No newline at end of file From 36c80a9b5ac41f4b595ca4441b3597e2c7cf8ffb Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:13:23 +0900 Subject: [PATCH 09/24] =?UTF-8?q?:sparkles:=20::=20Mission=20NetworkModule?= =?UTF-8?q?=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/com/stackknowledge/di/NetworkModule.kt | 12 +++++++++++- .../com/stackknowledge/di/RemoteDataSourceModule.kt | 10 +++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt index 2570a31f..ec9c780a 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt @@ -1,9 +1,19 @@ package com.stackknowledge.di +import com.stackknowledge.api.MissionAPI +import com.stackknowledge.datasource.mission.MissionDataSource +import com.stackknowledge.datasource.mission.MissionDataSourceImpl +import dagger.Binds import dagger.Module +import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import retrofit2.Retrofit @Module @InstallIn(SingletonComponent::class) -object NetworkModule {} \ No newline at end of file +object NetworkModule { + @Provides + fun provideMissionAPI(retrofit: Retrofit): MissionAPI = + retrofit.create(MissionAPI::class.java) +} \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt index 61e20ae2..afd5e6f6 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt @@ -1,9 +1,17 @@ package com.stackknowledge.di +import com.stackknowledge.datasource.mission.MissionDataSource +import com.stackknowledge.datasource.mission.MissionDataSourceImpl +import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) -abstract class RemoteDataSourceModule {} \ No newline at end of file +abstract class RemoteDataSourceModule { + @Binds + abstract fun bindMissionDataSource( + missionDataSourceImpl: MissionDataSourceImpl + ): MissionDataSource +} \ No newline at end of file From 190c8a6c4271a8c99c3d940ee96b38c26d38fe33 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:13:37 +0900 Subject: [PATCH 10/24] =?UTF-8?q?:sparkles:=20::=20Mission=20ViewModel=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mission/viewmodel/MissionViewModel.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt new file mode 100644 index 00000000..b2c94c6e --- /dev/null +++ b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt @@ -0,0 +1,18 @@ +package com.stackkowledge.mission.viewmodel + +import androidx.lifecycle.ViewModel +import com.stackknowledge.misson.CreateMissionUseCase +import com.stackknowledge.misson.DetailMissionUseCase +import com.stackknowledge.misson.GetMissionUseCase +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import javax.inject.Inject + +@HiltViewModel +class MissionViewModel @Inject constructor( + private val getMissionRequest: GetMissionUseCase, + private val detailMissionUseCase: DetailMissionUseCase, + private val createMissionUseCase: CreateMissionUseCase, +): ViewModel() { + +} \ No newline at end of file From e0a9e2c97b6a58eed8850dd019c4923b39d055b0 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:13:49 +0900 Subject: [PATCH 11/24] =?UTF-8?q?:sparkles:=20::=20Event=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mission/viewmodel/util/Event.kt | 59 +++++++++++++++++++ .../mission/viewmodel/util/errorHandling.kt | 2 + 2 files changed, 61 insertions(+) create mode 100644 feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt create mode 100644 feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt new file mode 100644 index 00000000..73816648 --- /dev/null +++ b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt @@ -0,0 +1,59 @@ +package com.stackkowledge.mission.viewmodel.util + +sealed class Event( + val data: T? = null +) { + + object Loading : Event() + + /** + * 성공 + */ + class Success(data: T? = null) : Event(data = data) + + /** + * 400번 요청이 올바르지 않은 경우 + */ + object BadRequest : Event() + + /** + * 401번 비인증 요청 + */ + object Unauthorized : Event() + + /** + * 403번 권한이 없음 + */ + object ForBidden : Event() + + /** + * 404 찾을 수 없는 경우 + */ + object NotFound : Event() + + /** + * 406 맞는 규격이 없는 경우 + */ + object NotAcceptable : Event() + + /** + * 408 요청이 너무 오래 걸리는 경우 + */ + object TimeOut : Event() + + /** + * 409 권한이 없을 때 + */ + object Conflict : Event() + + /** + * 50X 서버에러 + */ + object Server : Event() + + /** + * 예상치 못한 에러 + */ + object UnKnown : Event() + +} \ No newline at end of file diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt new file mode 100644 index 00000000..c6b33a30 --- /dev/null +++ b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt @@ -0,0 +1,2 @@ +package com.stackkowledge.mission.viewmodel.util + From e9649790ecad88c3a6e4892cd191e4091a238793 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 20:14:16 +0900 Subject: [PATCH 12/24] :fire: :: delete .gitkeep --- core/data/src/main/kotlin/com/stackknowledge/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 core/data/src/main/kotlin/com/stackknowledge/.gitkeep diff --git a/core/data/src/main/kotlin/com/stackknowledge/.gitkeep b/core/data/src/main/kotlin/com/stackknowledge/.gitkeep deleted file mode 100644 index e69de29b..00000000 From 6af450ead448fa45919a7370cc39df51e664d2e5 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 21:41:00 +0900 Subject: [PATCH 13/24] Merge branch 'develop' of https://github.com/Stack-Knowledge/Stack-Knowledge-android-v2 into feature/#46_mission_domain_network_setting # Conflicts: # core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt --- .../stackknowledge/repository/mission/MissionRepository.kt | 4 ++-- .../repository/mission/MissionRepositoryImpl.kt | 4 ++-- .../stackknowledge/datasource/mission/MissionDataSource.kt | 4 ++-- .../datasource/mission/MissionDataSourceImpl.kt | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt index e35a72e0..bd975e2f 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt @@ -4,10 +4,10 @@ import kotlinx.coroutines.flow.Flow import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel import remote.response.mission.DetailMissionResponseModel -import remote.response.mission.MissionResponse +import remote.response.mission.MissionResponseModel interface MissionRepository { - suspend fun getMission(): Flow + suspend fun getMission(): Flow suspend fun detailMission(missionId: DetailMissionRequestModel): Flow diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt index 1b5e7859..850b5025 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt @@ -5,13 +5,13 @@ import kotlinx.coroutines.flow.Flow import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel import remote.response.mission.DetailMissionResponseModel -import remote.response.mission.MissionResponse +import remote.response.mission.MissionResponseModel import javax.inject.Inject class MissionRepositoryImpl @Inject constructor( private val missionDataSource: MissionDataSource ): MissionRepository { - override suspend fun getMission(): Flow { + override suspend fun getMission(): Flow { return missionDataSource.getMission() } diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt index a4182016..832e8822 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt @@ -4,10 +4,10 @@ import kotlinx.coroutines.flow.Flow import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel import remote.response.mission.DetailMissionResponseModel -import remote.response.mission.MissionResponse +import remote.response.mission.MissionResponseModel interface MissionDataSource { - suspend fun getMission(): Flow + suspend fun getMission(): Flow suspend fun detailMission(missionId: DetailMissionRequestModel): Flow diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt index 965e8323..3278ee32 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt @@ -9,15 +9,15 @@ import kotlinx.coroutines.flow.flowOn import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel import remote.response.mission.DetailMissionResponseModel -import remote.response.mission.MissionResponse +import remote.response.mission.MissionResponseModel import javax.inject.Inject class MissionDataSourceImpl @Inject constructor( private val missionAPI: MissionAPI ) : MissionDataSource { - override suspend fun getMission(): Flow = flow { + override suspend fun getMission(): Flow = flow { emit( - StackKnowledgeApiHandler() + StackKnowledgeApiHandler() .httpRequest { missionAPI.getMission() } .sendRequest() ) From 58804bd3723128475949590b9f75cd95402ea353 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 21:43:54 +0900 Subject: [PATCH 14/24] Merge branch 'develop' of https://github.com/Stack-Knowledge/Stack-Knowledge-android-v2 into feature/#46_mission_domain_network_setting # Conflicts: # core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt --- .../com/stackknowledge/api/MissionAPI.kt | 22 +------------------ .../request/mission/CreateMissionRequest.kt | 8 ------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt index ad3c8289..85b151c9 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/api/MissionAPI.kt @@ -1,19 +1,15 @@ package com.stackknowledge.api -<<<<<<< HEAD import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel import remote.response.mission.DetailMissionResponseModel import remote.response.mission.MissionResponseModel -======= import com.stackknowledge.dto.request.mission.CreateMissionRequest import com.stackknowledge.dto.response.mission.GetMissionListResponse ->>>>>>> origin/feature/#46_mission_domain_network_setting import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.POST import retrofit2.http.Path -<<<<<<< HEAD interface MissionAPI { @GET("/mission") @@ -26,22 +22,6 @@ interface MissionAPI { @POST("/mission") suspend fun createMission( - @Body body: CreateMissionRequestModel -======= -import java.util.UUID - -interface MissionAPI { - @GET("mission") - suspend fun getMissionList(): List - - @GET("mission/{mission_id}") - suspend fun getMissionDetail( - @Path("mission_id") missionId: UUID, - ) - - @POST("mission") - suspend fun createMission( - @Body body: CreateMissionRequest, ->>>>>>> origin/feature/#46_mission_domain_network_setting + @Body body: CreateMissionRequestModel, ) } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt index 613f3688..b9594c18 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/request/mission/CreateMissionRequest.kt @@ -1,6 +1,5 @@ package com.stackknowledge.dto.request.mission -<<<<<<< HEAD import com.squareup.moshi.Json import com.squareup.moshi.JsonClass @@ -10,10 +9,3 @@ data class CreateMissionRequest ( @Json(name = "content") val content: String, @Json(name = "timeLimit") val timeLimit: Int, ) -======= -data class CreateMissionRequest( - val title: String, - val content: String, - val timeLimit: Int, -) ->>>>>>> origin/feature/#46_mission_domain_network_setting From 3a9619dd0f74498521e5b9886d48a4a4e7f46bcb Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 22:11:54 +0900 Subject: [PATCH 15/24] Merge branch 'develop' of https://github.com/Stack-Knowledge/Stack-Knowledge-android-v2 into feature/#46_mission_domain_network_setting # Conflicts: # core/data/src/main/kotlin/com/stackknowledge/di/RepositoryModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt # core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt --- .../request/student/UploadProfileImageRequest.kt | 7 +++++++ .../kotlin/remote/request/user/ApproveRequestModel.kt | 5 +++++ .../kotlin/remote/request/user/ScoreRequestModel.kt | 5 +++++ .../response/student/UploadProfileImageResponse.kt | 5 +++++ .../response/user/DetailSolveMissionResponseModel.kt | 8 ++++++++ .../user/GetRequestSignUpTeacherResponseModel.kt | 10 ++++++++++ 6 files changed, 40 insertions(+) diff --git a/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt b/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt index e69de29b..ff2727bd 100644 --- a/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt +++ b/core/model/src/main/kotlin/remote/request/student/UploadProfileImageRequest.kt @@ -0,0 +1,7 @@ +package remote.request.student + +import okhttp3.MultipartBody + +data class UploadProfileImageRequest( + val image: MultipartBody.Part +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt b/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt index e69de29b..84fe8a43 100644 --- a/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt +++ b/core/model/src/main/kotlin/remote/request/user/ApproveRequestModel.kt @@ -0,0 +1,5 @@ +package remote.request.user + +data class ApproveRequestModel( + val approveStatus: String, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt b/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt index e69de29b..e087666b 100644 --- a/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt +++ b/core/model/src/main/kotlin/remote/request/user/ScoreRequestModel.kt @@ -0,0 +1,5 @@ +package remote.request.user + +data class ScoreRequestModel( + val solveStatus: String, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt b/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt index e69de29b..95252c25 100644 --- a/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt +++ b/core/model/src/main/kotlin/remote/response/student/UploadProfileImageResponse.kt @@ -0,0 +1,5 @@ +package remote.response.student + +data class UploadProfileImageResponse( + val fileName: String, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt b/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt index e69de29b..014d7524 100644 --- a/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/user/DetailSolveMissionResponseModel.kt @@ -0,0 +1,8 @@ +package remote.response.user + +import java.util.UUID +data class DetailSolveMissionResponseModel( + val solveId: UUID, + val title: String, + val solution: String, +) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt b/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt index e69de29b..2a00a603 100644 --- a/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/user/GetRequestSignUpTeacherResponseModel.kt @@ -0,0 +1,10 @@ +package remote.response.user + +import kotlinx.datetime.LocalDateTime +import java.util.UUID + +data class GetRequestSignUpTeacherResponseModel( + val userId: UUID, + val name: String, + val createdAt: LocalDateTime, +) \ No newline at end of file From 7c47875452fb42219ef6ad37f3ae7224d0a8c0b8 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 22:21:51 +0900 Subject: [PATCH 16/24] =?UTF-8?q?:memo:=20::=20@Singleton=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/kotlin/com/stackknowledge/di/NetworkModule.kt | 3 +++ .../kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt index a5959b51..e457360c 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt @@ -7,15 +7,18 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import retrofit2.Retrofit +import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object NetworkModule { @Provides + @Singleton fun provideMissionAPI(retrofit: Retrofit): MissionAPI = retrofit.create(MissionAPI::class.java) @Provides + @Singleton fun provideStudentAPI(retrofit: Retrofit): StudentAPI = retrofit.create(StudentAPI::class.java) } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt index ac72815f..ae473068 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/RemoteDataSourceModule.kt @@ -8,16 +8,19 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) abstract class RemoteDataSourceModule { @Binds + @Singleton abstract fun bindMissionDataSource( missionDataSourceImpl: MissionDataSourceImpl ): MissionDataSource @Binds + @Singleton abstract fun bindStudentDataSource( studentDataSourceImpl: StudentDataSourceImpl ): StudentDataSource From 5e333070686dd57f601916b28d867877a0fd554b Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 22:39:07 +0900 Subject: [PATCH 17/24] :sparkles: :: modify NetWorkModule --- .../com/stackknowledge/di/NetworkModule.kt | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt index e457360c..a0c4a322 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt @@ -1,17 +1,66 @@ package com.stackknowledge.di +import com.squareup.moshi.Moshi import com.stackknowledge.api.MissionAPI import com.stackknowledge.api.StudentAPI +import com.stackknowledge.network.BuildConfig +import com.stackknowledge.util.AuthInterceptor import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import okhttp3.CookieJar +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit +import retrofit2.converter.moshi.MoshiConverterFactory +import java.util.concurrent.TimeUnit import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object NetworkModule { + + @Provides + @Singleton + fun provideOkhttpClient( + httpLoggingInterceptor: HttpLoggingInterceptor, + authInterceptor: AuthInterceptor, + ): OkHttpClient { + return OkHttpClient.Builder() + .cookieJar(CookieJar.NO_COOKIES) + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .addInterceptor(httpLoggingInterceptor) + .addInterceptor(authInterceptor) + .build() + } + + @Provides + @Singleton + fun provideMoshiInstance(): Moshi { + return Moshi.Builder().build() + } + + @Provides + @Singleton + fun provideConverterFactory(moshi: Moshi): MoshiConverterFactory { + return MoshiConverterFactory.create(moshi) + } + + @Provides + @Singleton + fun provideRetrofitInstance( + okHttpClient: OkHttpClient, + moshiConverterFactory: MoshiConverterFactory, + ): Retrofit { + return Retrofit.Builder() + .baseUrl(BuildConfig.BASE_URL) + .client(okHttpClient) + .addConverterFactory(moshiConverterFactory) + .build() + } @Provides @Singleton fun provideMissionAPI(retrofit: Retrofit): MissionAPI = From b2c11f92cd741f2937c1d37bc21f1766517190d8 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:07:10 +0900 Subject: [PATCH 18/24] :memo: :: modify import --- .../kotlin/com/stackknowledge/di/NetworkModule.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt index a0c4a322..69535588 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/di/NetworkModule.kt @@ -1,10 +1,9 @@ package com.stackknowledge.di +import com.msg.network.BuildConfig import com.squareup.moshi.Moshi import com.stackknowledge.api.MissionAPI import com.stackknowledge.api.StudentAPI -import com.stackknowledge.network.BuildConfig -import com.stackknowledge.util.AuthInterceptor import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -25,7 +24,6 @@ object NetworkModule { @Singleton fun provideOkhttpClient( httpLoggingInterceptor: HttpLoggingInterceptor, - authInterceptor: AuthInterceptor, ): OkHttpClient { return OkHttpClient.Builder() .cookieJar(CookieJar.NO_COOKIES) @@ -33,10 +31,17 @@ object NetworkModule { .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .addInterceptor(httpLoggingInterceptor) - .addInterceptor(authInterceptor) .build() } + @Provides + @Singleton + fun provideHttpLoggingInterceptor(): HttpLoggingInterceptor { + return HttpLoggingInterceptor().apply { + level = if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE + } + } + @Provides @Singleton fun provideMoshiInstance(): Moshi { From 967cd0c758d2895e1f7563a197a64dfd976d71bb Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:26:22 +0900 Subject: [PATCH 19/24] =?UTF-8?q?:sparkles:=20::=20Event,=20errorHandling?= =?UTF-8?q?=20=EA=B2=BD=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/src/main/java/com/example/common}/util/Event.kt | 2 +- .../src/main/java/com/example/common}/util/errorHandling.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename {feature/mission/src/main/java/com/stackkowledge/mission/viewmodel => core/common/src/main/java/com/example/common}/util/Event.kt (95%) rename {feature/mission/src/main/java/com/stackkowledge/mission/viewmodel => core/common/src/main/java/com/example/common}/util/errorHandling.kt (97%) diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt b/core/common/src/main/java/com/example/common/util/Event.kt similarity index 95% rename from feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt rename to core/common/src/main/java/com/example/common/util/Event.kt index 73816648..5b31e6d6 100644 --- a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/Event.kt +++ b/core/common/src/main/java/com/example/common/util/Event.kt @@ -1,4 +1,4 @@ -package com.stackkowledge.mission.viewmodel.util +package com.example.common.util sealed class Event( val data: T? = null diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt b/core/common/src/main/java/com/example/common/util/errorHandling.kt similarity index 97% rename from feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt rename to core/common/src/main/java/com/example/common/util/errorHandling.kt index 8f4f174f..afef3565 100644 --- a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/util/errorHandling.kt +++ b/core/common/src/main/java/com/example/common/util/errorHandling.kt @@ -1,4 +1,4 @@ -package com.stackkowledge.mission.viewmodel.util +package com.example.common.util import android.util.Log import com.example.common.exception.* From bf30343a38d907ac41e51c5314d9781c78de5429 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:26:51 +0900 Subject: [PATCH 20/24] :fire: :: delete suspend --- .../stackknowledge/repository/mission/MissionRepository.kt | 6 +++--- .../repository/mission/MissionRepositoryImpl.kt | 6 +++--- .../stackknowledge/datasource/mission/MissionDataSource.kt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt index bd975e2f..50a95050 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepository.kt @@ -7,9 +7,9 @@ import remote.response.mission.DetailMissionResponseModel import remote.response.mission.MissionResponseModel interface MissionRepository { - suspend fun getMission(): Flow + fun getMission(): Flow - suspend fun detailMission(missionId: DetailMissionRequestModel): Flow + fun detailMission(missionId: DetailMissionRequestModel): Flow - suspend fun createMission(body: CreateMissionRequestModel): Flow + fun createMission(body: CreateMissionRequestModel): Flow } \ No newline at end of file diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt index 850b5025..c8653674 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt @@ -11,15 +11,15 @@ import javax.inject.Inject class MissionRepositoryImpl @Inject constructor( private val missionDataSource: MissionDataSource ): MissionRepository { - override suspend fun getMission(): Flow { + override fun getMission(): Flow { return missionDataSource.getMission() } - override suspend fun detailMission(missionId: DetailMissionRequestModel): Flow { + override fun detailMission(missionId: DetailMissionRequestModel): Flow { return missionDataSource.detailMission(missionId = missionId) } - override suspend fun createMission(body: CreateMissionRequestModel): Flow { + override fun createMission(body: CreateMissionRequestModel): Flow { return missionDataSource.createMission(body = body) } } \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt index 832e8822..4306a767 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSource.kt @@ -7,9 +7,9 @@ import remote.response.mission.DetailMissionResponseModel import remote.response.mission.MissionResponseModel interface MissionDataSource { - suspend fun getMission(): Flow + fun getMission(): Flow - suspend fun detailMission(missionId: DetailMissionRequestModel): Flow + fun detailMission(missionId: DetailMissionRequestModel): Flow - suspend fun createMission(body: CreateMissionRequestModel): Flow + fun createMission(body: CreateMissionRequestModel): Flow } \ No newline at end of file From edb68e404fecd3a83194fd84069d816e5137df71 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:28:35 +0900 Subject: [PATCH 21/24] :sparkles: :: Success response data type --- .../mission/viewmodel/MissionViewModel.kt | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt index 06297213..fa95e551 100644 --- a/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt +++ b/feature/mission/src/main/java/com/stackkowledge/mission/viewmodel/MissionViewModel.kt @@ -2,15 +2,16 @@ package com.stackkowledge.mission.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.example.common.util.Event +import com.example.common.util.errorHandling import com.stackknowledge.usecase.misson.CreateMissionUseCase import com.stackknowledge.usecase.misson.DetailMissionUseCase import com.stackknowledge.usecase.misson.GetMissionUseCase -import com.stackkowledge.mission.viewmodel.util.Event -import com.stackkowledge.mission.viewmodel.util.errorHandling import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import remote.request.mission.CreateMissionRequestModel import remote.request.mission.DetailMissionRequestModel @@ -34,27 +35,35 @@ class MissionViewModel @Inject constructor( private val _createMissionRequest = MutableStateFlow>(Event.Loading) val createMissionRequest = _createMissionRequest.asStateFlow() - fun getMission() = viewModelScope.launch { + internal fun getMission() = viewModelScope.launch { getMissionUseCase() .onSuccess { - _missionRequest.value = Event.Success() + it.catch { remoteError -> + _missionRequest.value = remoteError.errorHandling() + }.collect { response -> + _missionRequest.value = Event.Success(data = response) + } } .onFailure { _missionRequest.value = it.errorHandling() } } - fun detailMission(missionId: DetailMissionRequestModel) = viewModelScope.launch { + internal fun detailMission(missionId: DetailMissionRequestModel) = viewModelScope.launch { detailMissionUseCase(missionId = missionId) .onSuccess { - _detailMissionRequest.value = Event.Success() + it.catch { remoteError -> + _detailMissionRequest.value = remoteError.errorHandling() + }.collect { response -> + _detailMissionRequest.value = Event.Success(data = response) + } } .onFailure { _detailMissionRequest.value = it.errorHandling() } } - fun createMission(body: CreateMissionRequestModel) = viewModelScope.launch { + internal fun createMission(body: CreateMissionRequestModel) = viewModelScope.launch { createMissionUseCase(body = body) .onSuccess { _createMissionRequest.value = Event.Success() From 6e69f833fdf5e5bee3498cfb896c747cf4a75d72 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:33:52 +0900 Subject: [PATCH 22/24] :fire: :: delete suspend --- .../datasource/mission/MissionDataSourceImpl.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt index 3278ee32..ac5cb314 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/datasource/mission/MissionDataSourceImpl.kt @@ -15,7 +15,7 @@ import javax.inject.Inject class MissionDataSourceImpl @Inject constructor( private val missionAPI: MissionAPI ) : MissionDataSource { - override suspend fun getMission(): Flow = flow { + override fun getMission(): Flow = flow { emit( StackKnowledgeApiHandler() .httpRequest { missionAPI.getMission() } @@ -23,7 +23,7 @@ class MissionDataSourceImpl @Inject constructor( ) }.flowOn(Dispatchers.IO) - override suspend fun detailMission(missionId: DetailMissionRequestModel): Flow = flow { + override fun detailMission(missionId: DetailMissionRequestModel): Flow = flow { emit( StackKnowledgeApiHandler() .httpRequest { missionAPI.getDetailMission(missionId = missionId) } @@ -31,7 +31,7 @@ class MissionDataSourceImpl @Inject constructor( ) }.flowOn(Dispatchers.IO) - override suspend fun createMission(body: CreateMissionRequestModel): Flow = flow { + override fun createMission(body: CreateMissionRequestModel): Flow = flow { emit( StackKnowledgeApiHandler() .httpRequest { missionAPI.createMission(body = body) } From 014e5e08777b0dae158782ce49795500a7082860 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:43:36 +0900 Subject: [PATCH 23/24] =?UTF-8?q?:fire:=20::=20=EA=B3=B5=EB=B0=B1=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/mission/MissionRepositoryImpl.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt index c8653674..1ea4a7b3 100644 --- a/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt +++ b/core/data/src/main/kotlin/com/stackknowledge/repository/mission/MissionRepositoryImpl.kt @@ -11,15 +11,15 @@ import javax.inject.Inject class MissionRepositoryImpl @Inject constructor( private val missionDataSource: MissionDataSource ): MissionRepository { - override fun getMission(): Flow { + override fun getMission(): Flow { return missionDataSource.getMission() } - override fun detailMission(missionId: DetailMissionRequestModel): Flow { + override fun detailMission(missionId: DetailMissionRequestModel): Flow { return missionDataSource.detailMission(missionId = missionId) } - override fun createMission(body: CreateMissionRequestModel): Flow { + override fun createMission(body: CreateMissionRequestModel): Flow { return missionDataSource.createMission(body = body) } } \ No newline at end of file From c911549ad1fab156f38d72dc1e9f52302b0b720e Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 26 Jun 2024 23:49:29 +0900 Subject: [PATCH 24/24] =?UTF-8?q?:memo:=20::=20=EC=BB=A8=EB=B2=A4=EC=85=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/mission/DetailMissionResponseModel.kt | 4 ++-- .../remote/response/mission/MissionResponseModel.kt | 2 +- .../kotlin/remote/response/mission/MissionsModel.kt | 10 +++++----- .../dto/response/mission/DetailMissionResponse.kt | 4 ++-- .../dto/response/mission/MissionResponse.kt | 2 +- .../stackknowledge/dto/response/mission/Missions.kt | 10 +++++----- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/core/model/src/main/kotlin/remote/response/mission/DetailMissionResponseModel.kt b/core/model/src/main/kotlin/remote/response/mission/DetailMissionResponseModel.kt index a91dc56b..b135e1e8 100644 --- a/core/model/src/main/kotlin/remote/response/mission/DetailMissionResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/mission/DetailMissionResponseModel.kt @@ -5,7 +5,7 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) data class DetailMissionResponseModel( - @Json(name = "title") val title : String, - @Json(name = "content") val content : String, + @Json(name = "title") val title: String, + @Json(name = "content") val content: String, @Json(name = "timeLimit") val timeLimit: Int, ) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/mission/MissionResponseModel.kt b/core/model/src/main/kotlin/remote/response/mission/MissionResponseModel.kt index f034aa2e..81338719 100644 --- a/core/model/src/main/kotlin/remote/response/mission/MissionResponseModel.kt +++ b/core/model/src/main/kotlin/remote/response/mission/MissionResponseModel.kt @@ -8,5 +8,5 @@ import java.util.UUID @JsonClass(generateAdapter = true) data class MissionResponseModel( - @Json(name = "body") val missions : MissionsModel, + @Json(name = "body") val missions: MissionsModel, ) \ No newline at end of file diff --git a/core/model/src/main/kotlin/remote/response/mission/MissionsModel.kt b/core/model/src/main/kotlin/remote/response/mission/MissionsModel.kt index 39399f66..390b7b55 100644 --- a/core/model/src/main/kotlin/remote/response/mission/MissionsModel.kt +++ b/core/model/src/main/kotlin/remote/response/mission/MissionsModel.kt @@ -8,9 +8,9 @@ import java.util.UUID @JsonClass(generateAdapter = true) data class MissionsModel( - @Json(name = "id") val id : UUID, - @Json(name = "title") val title : String, - @Json(name = "point") val point : Int, - @Json(name = "missionStatus") val missionStatus : MissionStatus, - @Json(name = "user") val user : UserModel, + @Json(name = "id") val id: UUID, + @Json(name = "title") val title: String, + @Json(name = "point") val point: Int, + @Json(name = "missionStatus") val missionStatus: MissionStatus, + @Json(name = "user") val user: UserModel, ) diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/DetailMissionResponse.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/DetailMissionResponse.kt index 190caa84..db57b3e8 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/DetailMissionResponse.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/DetailMissionResponse.kt @@ -5,7 +5,7 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) data class DetailMissionResponse( - @Json(name = "title") val title : String, - @Json(name = "content") val content : String, + @Json(name = "title") val title: String, + @Json(name = "content") val content: String, @Json(name = "timeLimit") val timeLimit: Int, ) \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/MissionResponse.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/MissionResponse.kt index cd91c472..e41cded1 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/MissionResponse.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/MissionResponse.kt @@ -5,5 +5,5 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) data class MissionResponse( - @Json(name = "body") val missions : Missions, + @Json(name = "body") val missions: Missions, ) \ No newline at end of file diff --git a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/Missions.kt b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/Missions.kt index 12a46146..af28f99c 100644 --- a/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/Missions.kt +++ b/core/network/src/main/kotlin/com/stackknowledge/dto/response/mission/Missions.kt @@ -8,9 +8,9 @@ import java.util.UUID @JsonClass(generateAdapter = true) data class Missions( - @Json(name = "id") val id : UUID, - @Json(name = "title") val title : String, - @Json(name = "point") val point : Int, - @Json(name = "missionStatus") val missionStatus : MissionStatus, - @Json(name = "user") val user : UserModel, + @Json(name = "id") val id: UUID, + @Json(name = "title") val title: String, + @Json(name = "point") val point: Int, + @Json(name = "missionStatus") val missionStatus: MissionStatus, + @Json(name = "user") val user: UserModel, )