Skip to content

Commit 55c8f13

Browse files
authored
Merge pull request #191 from YAPP-Github/refactor/#190-routine-integration
[Refactor/#190] WriteRoutine 관련 도메인 및 데이터 레이어를 Routine으로 통합합니다.
2 parents 77d64c0 + 4eaa9c0 commit 55c8f13

File tree

34 files changed

+278
-354
lines changed

34 files changed

+278
-354
lines changed

app/src/main/java/com/threegap/bitnagil/di/data/DataSourceModule.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import com.threegap.bitnagil.data.user.datasource.UserDataSource
2424
import com.threegap.bitnagil.data.user.datasourceImpl.UserDataSourceImpl
2525
import com.threegap.bitnagil.data.version.datasource.VersionDataSource
2626
import com.threegap.bitnagil.data.version.datasourceImpl.VersionDataSourceImpl
27-
import com.threegap.bitnagil.data.writeroutine.datasource.WriteRoutineDataSource
28-
import com.threegap.bitnagil.data.writeroutine.datasourceImpl.WriteRoutineDataSourceImpl
2927
import dagger.Binds
3028
import dagger.Module
3129
import dagger.hilt.InstallIn
@@ -56,10 +54,6 @@ abstract class DataSourceModule {
5654
@Singleton
5755
abstract fun bindEmotionDataSource(emotionDataSourceImpl: EmotionDataSourceImpl): EmotionDataSource
5856

59-
@Binds
60-
@Singleton
61-
abstract fun bindWriteRoutineDataSource(writeRoutineDataSourceImpl: WriteRoutineDataSourceImpl): WriteRoutineDataSource
62-
6357
@Binds
6458
@Singleton
6559
abstract fun bindUserDataSource(userDataSourceImpl: UserDataSourceImpl): UserDataSource

app/src/main/java/com/threegap/bitnagil/di/data/RepositoryModule.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.threegap.bitnagil.data.report.repositoryImpl.ReportRepositoryImpl
1010
import com.threegap.bitnagil.data.routine.repositoryImpl.RoutineRepositoryImpl
1111
import com.threegap.bitnagil.data.user.repositoryImpl.UserRepositoryImpl
1212
import com.threegap.bitnagil.data.version.repositoryImpl.VersionRepositoryImpl
13-
import com.threegap.bitnagil.data.writeroutine.repositoryImpl.WriteRoutineRepositoryImpl
1413
import com.threegap.bitnagil.domain.address.repository.AddressRepository
1514
import com.threegap.bitnagil.domain.auth.repository.AuthRepository
1615
import com.threegap.bitnagil.domain.emotion.repository.EmotionRepository
@@ -21,7 +20,6 @@ import com.threegap.bitnagil.domain.report.repository.ReportRepository
2120
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
2221
import com.threegap.bitnagil.domain.user.repository.UserRepository
2322
import com.threegap.bitnagil.domain.version.repository.VersionRepository
24-
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
2523
import dagger.Binds
2624
import dagger.Module
2725
import dagger.hilt.InstallIn
@@ -48,10 +46,6 @@ abstract class RepositoryModule {
4846
@Singleton
4947
abstract fun bindEmotionRepository(emotionRepositoryImpl: EmotionRepositoryImpl): EmotionRepository
5048

51-
@Binds
52-
@Singleton
53-
abstract fun bindWriteRoutineRepository(writeRoutineRepositoryImpl: WriteRoutineRepositoryImpl): WriteRoutineRepository
54-
5549
@Binds
5650
@Singleton
5751
abstract fun bindUserRepository(userRepositoryImpl: UserRepositoryImpl): UserRepository

app/src/main/java/com/threegap/bitnagil/di/data/ServiceModule.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.threegap.bitnagil.data.report.service.ReportService
1010
import com.threegap.bitnagil.data.routine.service.RoutineService
1111
import com.threegap.bitnagil.data.user.service.UserService
1212
import com.threegap.bitnagil.data.version.service.VersionService
13-
import com.threegap.bitnagil.data.writeroutine.service.WriteRoutineService
1413
import com.threegap.bitnagil.network.Auth
1514
import com.threegap.bitnagil.network.Kakao
1615
import com.threegap.bitnagil.network.NoneAuth
@@ -46,11 +45,6 @@ object ServiceModule {
4645
fun providerEmotionService(@Auth retrofit: Retrofit): EmotionService =
4746
retrofit.create(EmotionService::class.java)
4847

49-
@Provides
50-
@Singleton
51-
fun providerWriteRoutineService(@Auth retrofit: Retrofit): WriteRoutineService =
52-
retrofit.create(WriteRoutineService::class.java)
53-
5448
@Provides
5549
@Singleton
5650
fun provideReissueService(@NoneAuth retrofit: Retrofit): ReissueService =

data/src/main/java/com/threegap/bitnagil/data/routine/datasource/RoutineRemoteDataSource.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.threegap.bitnagil.data.routine.datasource
22

33
import com.threegap.bitnagil.data.routine.model.request.RoutineCompletionRequest
4+
import com.threegap.bitnagil.data.routine.model.request.RoutineEditRequest
5+
import com.threegap.bitnagil.data.routine.model.request.RoutineRegisterRequest
46
import com.threegap.bitnagil.data.routine.model.response.RoutineResponse
57
import com.threegap.bitnagil.data.routine.model.response.RoutineScheduleResponse
68

@@ -10,4 +12,6 @@ interface RoutineRemoteDataSource {
1012
suspend fun getRoutine(routineId: String): Result<RoutineResponse>
1113
suspend fun deleteRoutine(routineId: String): Result<Unit>
1214
suspend fun deleteRoutineForDay(routineId: String): Result<Unit>
15+
suspend fun registerRoutine(request: RoutineRegisterRequest): Result<Unit>
16+
suspend fun editRoutine(request: RoutineEditRequest): Result<Unit>
1317
}

data/src/main/java/com/threegap/bitnagil/data/routine/datasourceImpl/RoutineRemoteDataSourceImpl.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.threegap.bitnagil.data.common.safeApiCall
44
import com.threegap.bitnagil.data.common.safeUnitApiCall
55
import com.threegap.bitnagil.data.routine.datasource.RoutineRemoteDataSource
66
import com.threegap.bitnagil.data.routine.model.request.RoutineCompletionRequest
7+
import com.threegap.bitnagil.data.routine.model.request.RoutineEditRequest
8+
import com.threegap.bitnagil.data.routine.model.request.RoutineRegisterRequest
79
import com.threegap.bitnagil.data.routine.model.response.RoutineResponse
810
import com.threegap.bitnagil.data.routine.model.response.RoutineScheduleResponse
911
import com.threegap.bitnagil.data.routine.service.RoutineService
@@ -36,4 +38,14 @@ class RoutineRemoteDataSourceImpl @Inject constructor(
3638
safeUnitApiCall {
3739
routineService.deleteRoutineForDay(routineId)
3840
}
41+
42+
override suspend fun registerRoutine(request: RoutineRegisterRequest): Result<Unit> =
43+
safeUnitApiCall {
44+
routineService.postRoutine(request)
45+
}
46+
47+
override suspend fun editRoutine(request: RoutineEditRequest): Result<Unit> =
48+
safeUnitApiCall {
49+
routineService.patchRoutine(request)
50+
}
3951
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.threegap.bitnagil.data.routine.model.request
2+
3+
import com.threegap.bitnagil.domain.routine.model.DayOfWeek
4+
import com.threegap.bitnagil.domain.routine.model.RoutineEditInfo
5+
import com.threegap.bitnagil.domain.routine.model.RoutineUpdateType
6+
import kotlinx.serialization.SerialName
7+
import kotlinx.serialization.Serializable
8+
9+
@Serializable
10+
data class RoutineEditRequest(
11+
@SerialName("routineId")
12+
val routineId: String,
13+
@SerialName("updateApplyDate")
14+
val updateApplyDate: RoutineUpdateType,
15+
@SerialName("routineName")
16+
val routineName: String,
17+
@SerialName("repeatDay")
18+
val repeatDay: List<DayOfWeek>,
19+
@SerialName("routineStartDate")
20+
val routineStartDate: String,
21+
@SerialName("routineEndDate")
22+
val routineEndDate: String,
23+
@SerialName("executionTime")
24+
val executionTime: String,
25+
@SerialName("subRoutineName")
26+
val subRoutineName: List<String>,
27+
)
28+
29+
fun RoutineEditInfo.toDto(): RoutineEditRequest {
30+
return RoutineEditRequest(
31+
routineId = this.id,
32+
updateApplyDate = this.updateType,
33+
routineName = this.name,
34+
repeatDay = this.repeatDay,
35+
routineStartDate = this.startDate.toString(),
36+
routineEndDate = this.endDate.toString(),
37+
executionTime = this.startTime.toString(),
38+
subRoutineName = this.subRoutines,
39+
)
40+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.threegap.bitnagil.data.routine.model.request
2+
3+
import com.threegap.bitnagil.domain.recommendroutine.model.RecommendCategory
4+
import com.threegap.bitnagil.domain.routine.model.DayOfWeek
5+
import com.threegap.bitnagil.domain.routine.model.RoutineRegisterInfo
6+
import kotlinx.serialization.SerialName
7+
import kotlinx.serialization.Serializable
8+
9+
@Serializable
10+
data class RoutineRegisterRequest(
11+
@SerialName("routineName")
12+
val routineName: String,
13+
@SerialName("repeatDay")
14+
val repeatDay: List<DayOfWeek>,
15+
@SerialName("routineStartDate")
16+
val routineStartDate: String,
17+
@SerialName("routineEndDate")
18+
val routineEndDate: String,
19+
@SerialName("executionTime")
20+
val executionTime: String,
21+
@SerialName("subRoutineName")
22+
val subRoutineName: List<String>,
23+
@SerialName("recommendedRoutineType")
24+
val recommendedRoutineType: RecommendCategory?,
25+
)
26+
27+
fun RoutineRegisterInfo.toDto(): RoutineRegisterRequest {
28+
return RoutineRegisterRequest(
29+
routineName = this.name,
30+
repeatDay = this.repeatDay,
31+
routineStartDate = this.startDate.toString(),
32+
routineEndDate = this.endDate.toString(),
33+
executionTime = this.startTime.toString(),
34+
subRoutineName = this.subRoutines,
35+
recommendedRoutineType = this.recommendedRoutineType,
36+
)
37+
}

data/src/main/java/com/threegap/bitnagil/data/routine/repositoryImpl/RoutineRepositoryImpl.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@ import com.threegap.bitnagil.data.routine.model.request.toDto
55
import com.threegap.bitnagil.data.routine.model.response.toDomain
66
import com.threegap.bitnagil.domain.routine.model.Routine
77
import com.threegap.bitnagil.domain.routine.model.RoutineCompletionInfos
8+
import com.threegap.bitnagil.domain.routine.model.RoutineEditInfo
9+
import com.threegap.bitnagil.domain.routine.model.RoutineRegisterInfo
810
import com.threegap.bitnagil.domain.routine.model.RoutineSchedule
11+
import com.threegap.bitnagil.domain.routine.model.WriteRoutineEvent
912
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
13+
import kotlinx.coroutines.flow.Flow
14+
import kotlinx.coroutines.flow.MutableSharedFlow
15+
import kotlinx.coroutines.flow.asSharedFlow
1016
import javax.inject.Inject
1117

1218
class RoutineRepositoryImpl @Inject constructor(
@@ -27,4 +33,25 @@ class RoutineRepositoryImpl @Inject constructor(
2733

2834
override suspend fun deleteRoutineForDay(routineId: String): Result<Unit> =
2935
routineRemoteDataSource.deleteRoutineForDay(routineId)
36+
37+
override suspend fun registerRoutine(routineRegisterInfo: RoutineRegisterInfo): Result<Unit> {
38+
val request = routineRegisterInfo.toDto()
39+
return routineRemoteDataSource.registerRoutine(request).also {
40+
if (it.isSuccess) {
41+
_writeRoutineEventFlow.emit(WriteRoutineEvent.AddRoutine)
42+
}
43+
}
44+
}
45+
46+
override suspend fun editRoutine(routineEditInfo: RoutineEditInfo): Result<Unit> {
47+
val request = routineEditInfo.toDto()
48+
return routineRemoteDataSource.editRoutine(request).also {
49+
if (it.isSuccess) {
50+
_writeRoutineEventFlow.emit(WriteRoutineEvent.EditRoutine(routineEditInfo.id))
51+
}
52+
}
53+
}
54+
55+
private val _writeRoutineEventFlow = MutableSharedFlow<WriteRoutineEvent>()
56+
override suspend fun getWriteRoutineEventFlow(): Flow<WriteRoutineEvent> = _writeRoutineEventFlow.asSharedFlow()
3057
}

data/src/main/java/com/threegap/bitnagil/data/routine/service/RoutineService.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.threegap.bitnagil.data.routine.service
22

33
import com.threegap.bitnagil.data.routine.model.request.RoutineCompletionRequest
4+
import com.threegap.bitnagil.data.routine.model.request.RoutineEditRequest
5+
import com.threegap.bitnagil.data.routine.model.request.RoutineRegisterRequest
46
import com.threegap.bitnagil.data.routine.model.response.RoutineResponse
57
import com.threegap.bitnagil.data.routine.model.response.RoutineScheduleResponse
68
import com.threegap.bitnagil.network.model.BaseResponse
79
import retrofit2.http.Body
810
import retrofit2.http.DELETE
911
import retrofit2.http.GET
12+
import retrofit2.http.PATCH
13+
import retrofit2.http.POST
1014
import retrofit2.http.PUT
1115
import retrofit2.http.Path
1216
import retrofit2.http.Query
@@ -37,4 +41,14 @@ interface RoutineService {
3741
suspend fun deleteRoutineForDay(
3842
@Path("routineId") routineId: String,
3943
): BaseResponse<Unit>
44+
45+
@POST("/api/v2/routines")
46+
suspend fun postRoutine(
47+
@Body routineRegisterRequest: RoutineRegisterRequest,
48+
): BaseResponse<Unit>
49+
50+
@PATCH("/api/v2/routines")
51+
suspend fun patchRoutine(
52+
@Body routineEditRequest: RoutineEditRequest,
53+
): BaseResponse<Unit>
4054
}

data/src/main/java/com/threegap/bitnagil/data/writeroutine/datasource/WriteRoutineDataSource.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)