diff --git a/core/data/src/main/java/com/youthtalk/data/AnnounceService.kt b/core/data/src/main/java/com/youthtalk/data/AnnounceService.kt
deleted file mode 100644
index f0a8e2c0..00000000
--- a/core/data/src/main/java/com/youthtalk/data/AnnounceService.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.youthtalk.data
-
-import com.youthtalk.dto.CommonResponse
-import com.youthtalk.dto.mypage.AnnounceDetailResponse
-import com.youthtalk.dto.mypage.AnnouncesResponse
-import retrofit2.http.GET
-import retrofit2.http.Path
-import retrofit2.http.Query
-
-interface AnnounceService {
-
- /**
- * 회원 > 회원 탈퇴
- * @see PostMan 링크
- * @return [Unit]
- * */
- @GET("/api/v1/announcements")
- suspend fun getAllAnnounce(@Query("size") size: Int, @Query("page") page: Int): CommonResponse
-
- @GET("/api/v1/announcements/{id}")
- suspend fun getAnnounceDetail(@Path("id") id: Long): CommonResponse
-}
diff --git a/core/data/src/main/java/com/youthtalk/datasource/announce/AnnouncePagingSource.kt b/core/data/src/main/java/com/youthtalk/datasource/announce/AnnouncePagingSource.kt
deleted file mode 100644
index 4935bcde..00000000
--- a/core/data/src/main/java/com/youthtalk/datasource/announce/AnnouncePagingSource.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.youthtalk.datasource.announce
-
-import androidx.paging.PagingSource
-import androidx.paging.PagingState
-import com.youthtalk.data.AnnounceService
-import com.youthtalk.mapper.toData
-import com.youthtalk.model.Announce
-import java.io.IOException
-import javax.inject.Inject
-import retrofit2.HttpException
-
-class AnnouncePagingSource @Inject constructor(
- private val announceService: AnnounceService
-) : PagingSource() {
-
- override fun getRefreshKey(state: PagingState): Int? {
- return state.anchorPosition?.let { anchorPosition ->
- val close = state.closestPageToPosition(anchorPosition)
- close?.prevKey?.plus(1) ?: close?.nextKey?.minus(1)
- }
- }
-
- override suspend fun load(params: LoadParams): LoadResult {
- try {
- val pageNumber = params.key ?: 0
-
- val response = announceService.getAllAnnounce(
- page = pageNumber,
- size = params.loadSize
- )
-
- val data = response.data?.announcementList?.map { it.toData() } ?: listOf()
-
- return LoadResult.Page(
- data = data,
- prevKey = if (pageNumber == 0) null else pageNumber - 1,
- nextKey = if (response.data?.totalPage == pageNumber) null else pageNumber + 1
- )
- } catch (e: IOException) {
- return LoadResult.Error(e)
- } catch (e: HttpException) {
- return LoadResult.Error(e)
- }
- }
-}
diff --git a/core/data/src/main/java/com/youthtalk/di/ApiModule.kt b/core/data/src/main/java/com/youthtalk/di/ApiModule.kt
index 741fe1c7..d97ea2e7 100644
--- a/core/data/src/main/java/com/youthtalk/di/ApiModule.kt
+++ b/core/data/src/main/java/com/youthtalk/di/ApiModule.kt
@@ -2,7 +2,6 @@ package com.youthtalk.di
import com.core.datastore.datasource.DataStoreDataSource
import com.youth.app.core.data.BuildConfig
-import com.youthtalk.data.AnnounceService
import com.youthtalk.data.CommentService
import com.youthtalk.data.CommunityService
import com.youthtalk.data.LoginService
@@ -191,10 +190,6 @@ object ApiModule {
@Singleton
fun provideCommunityService(@Main retrofit: Retrofit): CommunityService = retrofit.create(CommunityService::class.java)
- @Provides
- @Singleton
- fun provideAnnounceService(@Main retrofit: Retrofit): AnnounceService = retrofit.create(AnnounceService::class.java)
-
@Provides
@Singleton
fun provideReportService(@Main retrofit: Retrofit): ReportService = retrofit.create(ReportService::class.java)
diff --git a/core/data/src/main/java/com/youthtalk/di/DataModule.kt b/core/data/src/main/java/com/youthtalk/di/DataModule.kt
index cbc01b1e..6f60013a 100644
--- a/core/data/src/main/java/com/youthtalk/di/DataModule.kt
+++ b/core/data/src/main/java/com/youthtalk/di/DataModule.kt
@@ -1,6 +1,5 @@
package com.youthtalk.di
-import com.core.dataapi.repository.AnnounceRepository
import com.core.dataapi.repository.CommentRepository
import com.core.dataapi.repository.CommunityRepository
import com.core.dataapi.repository.HomeRepository
@@ -13,7 +12,6 @@ import com.core.dataapi.repository.SseRepository
import com.core.dataapi.repository.UserRepository
import com.core.datastore.datasource.DataSource
import com.core.datastore.datasource.DataStoreDataSource
-import com.youthtalk.repository.AnnounceRepositoryImpl
import com.youthtalk.repository.CommentRepositoryImpl
import com.youthtalk.repository.CommunityRepositoryImpl
import com.youthtalk.repository.HomeRepositoryImpl
@@ -60,9 +58,6 @@ abstract class DataModule {
@Binds
abstract fun bindsSearchRepository(repository: SearchRepositoryImpl): SearchRepository
- @Binds
- abstract fun bindsAnnounceRepository(repository: AnnounceRepositoryImpl): AnnounceRepository
-
@Binds
abstract fun bindsReportRepository(repository: ReportRepositoryImpl): ReportRepository
diff --git a/core/data/src/main/java/com/youthtalk/repository/AnnounceRepositoryImpl.kt b/core/data/src/main/java/com/youthtalk/repository/AnnounceRepositoryImpl.kt
deleted file mode 100644
index 8a305381..00000000
--- a/core/data/src/main/java/com/youthtalk/repository/AnnounceRepositoryImpl.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.youthtalk.repository
-
-import androidx.paging.Pager
-import androidx.paging.PagingConfig
-import androidx.paging.PagingData
-import com.core.dataapi.repository.AnnounceRepository
-import com.core.exception.NoDataException
-import com.youthtalk.data.AnnounceService
-import com.youthtalk.datasource.announce.AnnouncePagingSource
-import com.youthtalk.dto.mypage.AnnounceDetailResponse
-import com.youthtalk.mapper.toData
-import com.youthtalk.model.Announce
-import com.youthtalk.model.AnnounceDetail
-import com.youthtalk.utils.ErrorUtils.throwableError
-import javax.inject.Inject
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.flow
-
-class AnnounceRepositoryImpl @Inject constructor(
- private val announceService: AnnounceService
-) : AnnounceRepository {
-
- override fun getAnnounces(): Flow> {
- return Pager(
- config = PagingConfig(
- pageSize = 10,
- initialLoadSize = 10
- ),
- pagingSourceFactory = {
- AnnouncePagingSource(announceService)
- }
- ).flow
- }
-
- override fun getAnnounceDetail(id: Long): Flow = flow {
- runCatching {
- announceService.getAnnounceDetail(id)
- }
- .onSuccess { response ->
- response.data?.let {
- emit(it.toData())
- } ?: throw NoDataException()
- }
- .onFailure {
- throwableError(it)
- }
- }
-}
diff --git a/core/data/src/test/java/com/youthtalk/api/announceService/GetAnnounceTest.kt b/core/data/src/test/java/com/youthtalk/api/announceService/GetAnnounceTest.kt
deleted file mode 100644
index eca934d1..00000000
--- a/core/data/src/test/java/com/youthtalk/api/announceService/GetAnnounceTest.kt
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.youthtalk.api.announceService
-
-import com.youthtalk.api.ApiTestUtils
-import com.youthtalk.api.ApiTestUtils.createRetrofit
-import com.youthtalk.api.announceService.json.getAllAnnounceSuccessJson
-import com.youthtalk.api.announceService.json.getAnnounceSuccessJson
-import com.youthtalk.api.announceService.json.getNoExistAnnounceErrorJson
-import com.youthtalk.api.interceptor.TestAuthInterceptor
-import com.youthtalk.data.AnnounceService
-import com.youthtalk.dto.CommonResponse
-import kotlinx.coroutines.runBlocking
-import kotlinx.serialization.json.Json
-import okhttp3.OkHttpClient
-import okhttp3.mockwebserver.MockResponse
-import okhttp3.mockwebserver.MockWebServer
-import org.junit.After
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNotNull
-import org.junit.Assert.assertNull
-import org.junit.Assert.assertThrows
-import org.junit.Before
-import org.junit.Test
-import retrofit2.HttpException
-
-class GetAnnounceTest {
-
- private lateinit var mockWebServer: MockWebServer
- private lateinit var sut: AnnounceService
-
- @Before
- fun setUp() {
- mockWebServer = MockWebServer()
- mockWebServer.start()
-
- val okHttpClient = OkHttpClient.Builder()
- .addInterceptor(ApiTestUtils.httpLoggingInterceptor)
- .addInterceptor(TestAuthInterceptor())
- .build()
-
- val retrofit = createRetrofit(
- baseUrl = mockWebServer.url("/"),
- client = okHttpClient
- )
-
- sut = retrofit.create(AnnounceService::class.java)
- }
-
- @After
- fun tearDown() {
- mockWebServer.shutdown()
- }
-
- @Test
- fun givenAnnounceId_whenGet_thenWorksFine() = runBlocking {
- // given
- val announceId = 3L
- val responseJson = getAnnounceSuccessJson
-
- mockWebServer.enqueue(
- MockResponse()
- .setResponseCode(200)
- .setBody(responseJson)
- )
-
- // when
- val response = sut.getAnnounceDetail(announceId)
- val recordedRequest = mockWebServer.takeRequest()
-
- // then
- assertEquals("/api/v1/announcements/$announceId", recordedRequest.path)
-
- // 응답 body 검증
- assertEquals(200, response.status)
- assertEquals("요청에 성공하였습니다.", response.message)
- assertEquals("S01", response.code)
-
- assertEquals(announceId, response.data?.id)
- }
-
- @Test
- fun givenNoExistAnnounceId_whenGet_thenThrows404Exception() = runBlocking {
- // given
- val noExistAnnounceId = 2L
- val responseJson = getNoExistAnnounceErrorJson
-
- mockWebServer.enqueue(
- MockResponse()
- .setResponseCode(404)
- .setBody(responseJson)
- )
-
- // when
- val exception = assertThrows(HttpException::class.java) {
- runBlocking {
- sut.getAnnounceDetail(noExistAnnounceId)
- }
- }
-
- // then
- val errorBody = exception.response()?.errorBody()?.string()
- assertNotNull(errorBody)
-
- val errorResponse = Json.decodeFromString>(errorBody!!)
- assertEquals(404, errorResponse.status)
- assertEquals("해당 공지사항을 찾을 수 없습니다.", errorResponse.message)
- assertEquals("A01", errorResponse.code)
- assertNull(errorResponse.data)
- }
-
- @Test
- fun given_whenGetAllAnnounce_thenWorksFine() = runBlocking {
- // given
- val size = 1
- val page = 0
- val responseJson = getAllAnnounceSuccessJson
-
- mockWebServer.enqueue(
- MockResponse()
- .setResponseCode(200)
- .setBody(responseJson)
- )
-
- // when
- val response = sut.getAllAnnounce(size, page)
- val recordedRequest = mockWebServer.takeRequest()
-
- // then
- // then
- assertEquals("/api/v1/announcements?size=$size&page=$page", recordedRequest.path)
-
- // 응답 body 검증
- assertEquals(200, response.status)
- assertEquals("요청에 성공하였습니다.", response.message)
- assertEquals("S01", response.code)
-
- assertEquals(page, response.data?.pageNum)
- assertEquals(size, response.data?.pageSize)
- }
-}
diff --git a/core/data/src/test/java/com/youthtalk/api/announceService/json/GetAnnounceJson.kt b/core/data/src/test/java/com/youthtalk/api/announceService/json/GetAnnounceJson.kt
deleted file mode 100644
index 23cbb3b8..00000000
--- a/core/data/src/test/java/com/youthtalk/api/announceService/json/GetAnnounceJson.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.youthtalk.api.announceService.json
-
-val getAnnounceSuccessJson = """
- {
- "status": 200,
- "message": "요청에 성공하였습니다.",
- "code": "S01",
- "data": {
- "id": 3,
- "title": "test",
- "content": "test",
- "imageList": [
- {
- "id": 9,
- "imgUrl": "https://youthtalktalk.s3.ap-northeast-2.amazonaws.com/e5326552-618d-4456-8ec6-3329c70a7d66-elmo.jpeg"
- }
- ],
- "updateAt": "2024-09-08T19:07:25.536651"
- }
- }
-""".trimIndent()
-
-val getNoExistAnnounceErrorJson = """
- {
- "status": 404,
- "message": "해당 공지사항을 찾을 수 없습니다.",
- "code": "A01",
- "data": null
- }
-""".trimIndent()
-
-val getAllAnnounceSuccessJson = """
- {
- "status": 200,
- "message": "요청에 성공하였습니다.",
- "code": "S01",
- "data": {
- "pageNum": 0,
- "pageSize": 1,
- "totalPage": 3,
- "announcementList": [
- {
- "id": 4,
- "title": "test",
- "updateAt": "2024-09-08T19:22:15.681713"
- }
- ]
- }
- }
-""".trimIndent()
diff --git a/core/dataApi/src/main/java/com/core/dataapi/repository/AnnounceRepository.kt b/core/dataApi/src/main/java/com/core/dataapi/repository/AnnounceRepository.kt
deleted file mode 100644
index 71c6ee88..00000000
--- a/core/dataApi/src/main/java/com/core/dataapi/repository/AnnounceRepository.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.core.dataapi.repository
-
-import androidx.paging.PagingData
-import com.youthtalk.model.Announce
-import com.youthtalk.model.AnnounceDetail
-import kotlinx.coroutines.flow.Flow
-
-interface AnnounceRepository {
- fun getAnnounces(): Flow>
- fun getAnnounceDetail(id: Long): Flow
-}