File tree Expand file tree Collapse file tree 16 files changed +429
-3
lines changed
presentation/src/main/java Expand file tree Collapse file tree 16 files changed +429
-3
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import okhttp3.logging.HttpLoggingInterceptor
1212import remote.api.auth.AdminAPI
1313import remote.api.auth.AuthApi
1414import remote.api.auth.HomeApi
15+ import remote.api.auth.NoticeAPI
1516import remote.api.auth.UsersAPi
1617import retrofit2.Retrofit
1718import retrofit2.converter.moshi.MoshiConverterFactory
@@ -93,9 +94,13 @@ object NetworkModule {
9394 }
9495 @Provides
9596 @Singleton
97+ fun provideNoticeApI (retrofit : Retrofit ): NoticeAPI {
98+ return retrofit.create(NoticeAPI ::class .java)
99+ }
100+ @Provides
101+ @Singleton
96102 fun provideAdminAPi (retrofit : Retrofit ): AdminAPI {
97103 return retrofit.create(AdminAPI ::class .java)
98104
99105 }
100-
101106}
Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ import remote.datasource.admin.AdminDataSource
1010import remote.datasource.admin.AdminDataSourceImpl
1111import remote.datasource.homes.HomesDataSource
1212import remote.datasource.homes.HomesDataSourceImpl
13+ import remote.datasource.notice.NoticeDataSourceImpl
14+ import remote.datasource.notice.NoticeDatasource
1315import remote.datasource.users.UsersDataSource
1416import remote.datasource.users.UsersDataSourceImpl
1517
@@ -29,6 +31,10 @@ abstract class RemoteDataSourceModule {
2931 homeDataSourceImpl : HomesDataSourceImpl
3032 ): HomesDataSource
3133 @Binds
34+ abstract fun provideNoticeDatasource (
35+ noticeDataSourceImpl : NoticeDataSourceImpl
36+ ):NoticeDatasource
37+ @Binds
3238 abstract fun proviedAdminDatasource (
3339 adminDataSourceImpl : AdminDataSourceImpl
3440 ): AdminDataSource
Original file line number Diff line number Diff line change @@ -6,11 +6,13 @@ import dagger.hilt.InstallIn
66import dagger.hilt.components.SingletonComponent
77import reopoistory.AdminRepository
88import reopoistory.HomesRepository
9+ import reopoistory.NoticeRepository
910import reopoistory.UsersRepository
1011import repoistory.AdminRepositoryImpl
1112import repository.AuthRepository
1213import repoistory.AuthRepositoryImpl
1314import repoistory.HomeRepositoryImpl
15+ import repoistory.NoticeRepositoryImpl
1416import repoistory.UsersRepositoryImpl
1517
1618@Module
@@ -29,9 +31,11 @@ abstract class RepositoryModule {
2931 homeRepositoryImpl : HomeRepositoryImpl
3032 ): HomesRepository
3133 @Binds
34+ abstract fun providerNoticeRepository (
35+ noticeRepositoryImpl : NoticeRepositoryImpl
36+ ): NoticeRepository
37+ @Binds
3238 abstract fun providerAdminRepository (
3339 adminRepositoryImpl : AdminRepositoryImpl
3440 ): AdminRepository
35-
36-
3741}
Original file line number Diff line number Diff line change 1+ package remote.api.auth
2+
3+ import remote.dto.users.response.NoticeResponse
4+ import retrofit2.http.GET
5+ import retrofit2.http.Path
6+ import java.util.UUID
7+
8+ interface NoticeAPI {
9+ @GET(" /{notice_id}" )
10+ suspend fun getNotice (
11+ @Path(" notice_id" ) noticeId : UUID ,
12+ ): List <NoticeResponse >
13+
14+ }
Original file line number Diff line number Diff line change 1+ package remote.datasource.notice
2+
3+ import kotlinx.coroutines.flow.Flow
4+ import remote.api.auth.NoticeAPI
5+ import remote.dto.users.response.NoticeResponse
6+ import util.performApiRequest
7+ import java.util.UUID
8+ import javax.inject.Inject
9+
10+ class NoticeDataSourceImpl @Inject constructor(
11+ private val noticeService : NoticeAPI
12+ ): NoticeDatasource
13+ {
14+ override fun getNotice (noticeId : UUID ): Flow <List <NoticeResponse >> =
15+ performApiRequest { noticeService.getNotice(noticeId = noticeId) }
16+ }
Original file line number Diff line number Diff line change 1+ package remote.datasource.notice
2+
3+ import kotlinx.coroutines.flow.Flow
4+ import remote.dto.users.response.NoticeResponse
5+ import java.util.UUID
6+
7+ interface NoticeDatasource {
8+ fun getNotice (noticeId : UUID ): Flow <List <NoticeResponse >>
9+ }
Original file line number Diff line number Diff line change 1+ package remote.dto.users.response
2+
3+ import com.squareup.moshi.Json
4+ import com.squareup.moshi.JsonClass
5+ import model.users.response.NoticeResponseModel
6+
7+ @JsonClass(generateAdapter = true )
8+ data class NoticeResponse (
9+ @Json(name = " noticeId" ) val noticeId : Int ,
10+ @Json(name = " title" ) val title : String ,
11+ @Json(name = " content" ) val content : String ,
12+ @Json(name = " name" ) val name : String ,
13+ )
14+
15+ fun NoticeResponse.toModel () = NoticeResponseModel (
16+ noticeId = noticeId,
17+ title = title,
18+ content = content,
19+ name = name,
20+ )
Original file line number Diff line number Diff line change 1+ package repoistory
2+
3+ import kotlinx.coroutines.flow.Flow
4+ import kotlinx.coroutines.flow.map
5+ import model.users.response.NoticeResponseModel
6+ import remote.datasource.notice.NoticeDatasource
7+ import remote.dto.users.response.toModel
8+ import reopoistory.NoticeRepository
9+ import java.util.UUID
10+ import javax.inject.Inject
11+
12+ class NoticeRepositoryImpl @Inject constructor(
13+ private val noticeDatasource : NoticeDatasource
14+ ): NoticeRepository
15+ {
16+ override fun getNotice (noticeId : UUID ): Flow <List <NoticeResponseModel >> {
17+ return noticeDatasource.getNotice(noticeId = noticeId).map {list -> list.map { it.toModel() } }
18+ }
19+ }
Original file line number Diff line number Diff line change 1+ package model.users.response
2+
3+ data class NoticeResponseModel (
4+ val noticeId : Int ,
5+ val title : String ,
6+ val content : String ,
7+ val name : String ,
8+ )
Original file line number Diff line number Diff line change 1+ package reopoistory
2+
3+ import kotlinx.coroutines.flow.Flow
4+ import model.users.response.NoticeResponseModel
5+ import java.util.UUID
6+
7+ interface NoticeRepository {
8+ fun getNotice (noticeId : UUID ): Flow <List <NoticeResponseModel >>
9+ }
You canβt perform that action at this time.
0 commit comments