Skip to content

Commit 512b3d3

Browse files
authored
Merge pull request #63 from Team-MindWay/feature/62-get-notice
πŸ”€(::62) Notice μ„œλ²„ν†΅μ‹ μ„ μœ„ν•œ μ„ΈνŒ…μ„ ν–ˆμŠ΅λ‹ˆλ‹€
2 parents 0a1e29a + aecf56f commit 512b3d3

File tree

16 files changed

+429
-3
lines changed

16 files changed

+429
-3
lines changed

β€Žapp/src/main/java/module/NetworkModule.ktβ€Ž

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import okhttp3.logging.HttpLoggingInterceptor
1212
import remote.api.auth.AdminAPI
1313
import remote.api.auth.AuthApi
1414
import remote.api.auth.HomeApi
15+
import remote.api.auth.NoticeAPI
1516
import remote.api.auth.UsersAPi
1617
import retrofit2.Retrofit
1718
import 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
}

β€Žapp/src/main/java/module/RemoteDataSourceModule.ktβ€Ž

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import remote.datasource.admin.AdminDataSource
1010
import remote.datasource.admin.AdminDataSourceImpl
1111
import remote.datasource.homes.HomesDataSource
1212
import remote.datasource.homes.HomesDataSourceImpl
13+
import remote.datasource.notice.NoticeDataSourceImpl
14+
import remote.datasource.notice.NoticeDatasource
1315
import remote.datasource.users.UsersDataSource
1416
import 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

β€Žapp/src/main/java/module/RepositoryModule.ktβ€Ž

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import dagger.hilt.InstallIn
66
import dagger.hilt.components.SingletonComponent
77
import reopoistory.AdminRepository
88
import reopoistory.HomesRepository
9+
import reopoistory.NoticeRepository
910
import reopoistory.UsersRepository
1011
import repoistory.AdminRepositoryImpl
1112
import repository.AuthRepository
1213
import repoistory.AuthRepositoryImpl
1314
import repoistory.HomeRepositoryImpl
15+
import repoistory.NoticeRepositoryImpl
1416
import 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
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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+
)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}

0 commit comments

Comments
Β (0)