From 1963deaabc4c155180e1b2680f9a0f692aa67f82 Mon Sep 17 00:00:00 2001 From: Dongmin Date: Wed, 10 Jan 2024 06:37:52 +0900 Subject: [PATCH] =?UTF-8?q?[FEAT/#55]=20SignOut=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/going/going/di/DataSourceModule.kt | 7 +++++++ .../java/com/going/going/di/RepositoryModule.kt | 7 +++++++ .../java/com/going/going/di/ServiceModule.kt | 7 +++++++ .../going/data/datasource/SettingDataSource.kt | 7 +++++++ .../data/datasourceImpl/SettingDataSourceImpl.kt | 12 ++++++++++++ .../data/dto/response/SignOutResponseDto.kt | 16 ++++++++++++++++ .../data/repositoryImpl/SettingRepositoryImpl.kt | 14 ++++++++++++++ .../com/going/data/service/SettingService.kt | 9 +++++++++ .../going/domain/entity/response/SignOutModel.kt | 6 ++++++ .../going/domain/repository/SettingRepository.kt | 7 +++++++ 10 files changed, 92 insertions(+) create mode 100644 data/src/main/java/com/going/data/datasource/SettingDataSource.kt create mode 100644 data/src/main/java/com/going/data/datasourceImpl/SettingDataSourceImpl.kt create mode 100644 data/src/main/java/com/going/data/dto/response/SignOutResponseDto.kt create mode 100644 data/src/main/java/com/going/data/repositoryImpl/SettingRepositoryImpl.kt create mode 100644 data/src/main/java/com/going/data/service/SettingService.kt create mode 100644 domain/src/main/kotlin/com/going/domain/entity/response/SignOutModel.kt create mode 100644 domain/src/main/kotlin/com/going/domain/repository/SettingRepository.kt diff --git a/app/src/main/java/com/going/going/di/DataSourceModule.kt b/app/src/main/java/com/going/going/di/DataSourceModule.kt index 66020dce..08911089 100644 --- a/app/src/main/java/com/going/going/di/DataSourceModule.kt +++ b/app/src/main/java/com/going/going/di/DataSourceModule.kt @@ -2,8 +2,10 @@ package com.going.going.di import com.going.data.datasource.AuthDataSource import com.going.data.datasource.MockDataSource +import com.going.data.datasource.SettingDataSource import com.going.data.datasourceImpl.AuthDataSourceImpl import com.going.data.datasourceImpl.MockDataSourceImpl +import com.going.data.datasourceImpl.SettingDataSourceImpl import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -23,4 +25,9 @@ object DataSourceModule { @Singleton fun provideAuthDataSource(authDataSourceImpl: AuthDataSourceImpl): AuthDataSource = authDataSourceImpl + + @Provides + @Singleton + fun provideSettingDataSource(settingDataSourceImpl: SettingDataSourceImpl): SettingDataSource = + settingDataSourceImpl } diff --git a/app/src/main/java/com/going/going/di/RepositoryModule.kt b/app/src/main/java/com/going/going/di/RepositoryModule.kt index d8fcf24a..474639ab 100644 --- a/app/src/main/java/com/going/going/di/RepositoryModule.kt +++ b/app/src/main/java/com/going/going/di/RepositoryModule.kt @@ -2,9 +2,11 @@ package com.going.going.di import com.going.data.repositoryImpl.AuthRepositoryImpl import com.going.data.repositoryImpl.MockRepositoryImpl +import com.going.data.repositoryImpl.SettingRepositoryImpl import com.going.data.repositoryImpl.TokenRepositoryImpl import com.going.domain.repository.AuthRepository import com.going.domain.repository.MockRepository +import com.going.domain.repository.SettingRepository import com.going.domain.repository.TokenRepository import dagger.Module import dagger.Provides @@ -30,4 +32,9 @@ object RepositoryModule { @Singleton fun provideTokenRepository(tokenRepositoryImpl: TokenRepositoryImpl): TokenRepository = tokenRepositoryImpl + + @Provides + @Singleton + fun provideSettingRepository(settingRepositoryImpl: SettingRepositoryImpl): SettingRepository = + settingRepositoryImpl } diff --git a/app/src/main/java/com/going/going/di/ServiceModule.kt b/app/src/main/java/com/going/going/di/ServiceModule.kt index 807674da..cd422b06 100644 --- a/app/src/main/java/com/going/going/di/ServiceModule.kt +++ b/app/src/main/java/com/going/going/di/ServiceModule.kt @@ -2,6 +2,8 @@ package com.going.going.di import com.going.data.service.AuthService import com.going.data.service.MockService +import com.going.data.service.SettingService +import com.going.going.di.qualifier.JWT import com.going.going.di.qualifier.KAKAO import dagger.Module import dagger.Provides @@ -23,4 +25,9 @@ object ServiceModule { @Singleton fun provideAuthService(@KAKAO retrofit: Retrofit): AuthService = retrofit.create(AuthService::class.java) + + @Provides + @Singleton + fun provideSettingService(@JWT retrofit: Retrofit): SettingService = + retrofit.create(SettingService::class.java) } diff --git a/data/src/main/java/com/going/data/datasource/SettingDataSource.kt b/data/src/main/java/com/going/data/datasource/SettingDataSource.kt new file mode 100644 index 00000000..0b7cab84 --- /dev/null +++ b/data/src/main/java/com/going/data/datasource/SettingDataSource.kt @@ -0,0 +1,7 @@ +package com.going.data.datasource + +import com.going.data.dto.response.SignOutResponseDto + +interface SettingDataSource { + suspend fun patchSignOut(): SignOutResponseDto +} diff --git a/data/src/main/java/com/going/data/datasourceImpl/SettingDataSourceImpl.kt b/data/src/main/java/com/going/data/datasourceImpl/SettingDataSourceImpl.kt new file mode 100644 index 00000000..7e3444ca --- /dev/null +++ b/data/src/main/java/com/going/data/datasourceImpl/SettingDataSourceImpl.kt @@ -0,0 +1,12 @@ +package com.going.data.datasourceImpl + +import com.going.data.datasource.SettingDataSource +import com.going.data.dto.response.SignOutResponseDto +import com.going.data.service.SettingService +import javax.inject.Inject + +class SettingDataSourceImpl @Inject constructor( + private val settingService: SettingService, +) : SettingDataSource { + override suspend fun patchSignOut(): SignOutResponseDto = settingService.patchSignOut() +} diff --git a/data/src/main/java/com/going/data/dto/response/SignOutResponseDto.kt b/data/src/main/java/com/going/data/dto/response/SignOutResponseDto.kt new file mode 100644 index 00000000..6a03f5e2 --- /dev/null +++ b/data/src/main/java/com/going/data/dto/response/SignOutResponseDto.kt @@ -0,0 +1,16 @@ +package com.going.data.dto.response + +import com.going.domain.entity.response.SignOutModel +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SignOutResponseDto( + @SerialName("status") + val status: Int, + @SerialName("message") + val message: String, +) { + fun toSignOutModel() = + SignOutModel(status, message) +} diff --git a/data/src/main/java/com/going/data/repositoryImpl/SettingRepositoryImpl.kt b/data/src/main/java/com/going/data/repositoryImpl/SettingRepositoryImpl.kt new file mode 100644 index 00000000..e1045509 --- /dev/null +++ b/data/src/main/java/com/going/data/repositoryImpl/SettingRepositoryImpl.kt @@ -0,0 +1,14 @@ +package com.going.data.repositoryImpl + +import com.going.data.datasource.SettingDataSource +import com.going.domain.entity.response.SignOutModel +import com.going.domain.repository.SettingRepository +import javax.inject.Inject + +class SettingRepositoryImpl @Inject constructor( + private val settingDataSource: SettingDataSource, +) : SettingRepository { + override suspend fun patchSignOut(): Result = runCatching { + settingDataSource.patchSignOut().toSignOutModel() + } +} diff --git a/data/src/main/java/com/going/data/service/SettingService.kt b/data/src/main/java/com/going/data/service/SettingService.kt new file mode 100644 index 00000000..6473cacd --- /dev/null +++ b/data/src/main/java/com/going/data/service/SettingService.kt @@ -0,0 +1,9 @@ +package com.going.data.service + +import com.going.data.dto.response.SignOutResponseDto +import retrofit2.http.PATCH + +interface SettingService { + @PATCH("api/users/signout") + suspend fun patchSignOut(): SignOutResponseDto +} diff --git a/domain/src/main/kotlin/com/going/domain/entity/response/SignOutModel.kt b/domain/src/main/kotlin/com/going/domain/entity/response/SignOutModel.kt new file mode 100644 index 00000000..991849e2 --- /dev/null +++ b/domain/src/main/kotlin/com/going/domain/entity/response/SignOutModel.kt @@ -0,0 +1,6 @@ +package com.going.domain.entity.response + +data class SignOutModel( + val status: Int, + val message: String, +) diff --git a/domain/src/main/kotlin/com/going/domain/repository/SettingRepository.kt b/domain/src/main/kotlin/com/going/domain/repository/SettingRepository.kt new file mode 100644 index 00000000..456a23d0 --- /dev/null +++ b/domain/src/main/kotlin/com/going/domain/repository/SettingRepository.kt @@ -0,0 +1,7 @@ +package com.going.domain.repository + +import com.going.domain.entity.response.SignOutModel + +interface SettingRepository { + suspend fun patchSignOut(): Result +}