11package com.terning.data.search.repositoryimpl
22
3+ import androidx.paging.Pager
4+ import androidx.paging.PagingConfig
5+ import androidx.paging.PagingData
6+ import androidx.paging.map
37import com.terning.data.search.datasource.SearchDataSource
4- import com.terning.data.search.dto.request.SearchRequestDto
58import com.terning.data.search.mapper.toSearchBannerList
69import com.terning.data.search.mapper.toSearchPopularAnnouncementList
710import com.terning.data.search.mapper.toSearchResultList
11+ import com.terning.data.search.pagingsource.SearchPagingSource
812import com.terning.domain.search.entity.SearchBanner
913import com.terning.domain.search.entity.SearchPopularAnnouncement
1014import com.terning.domain.search.entity.SearchResult
1115import com.terning.domain.search.repository.SearchRepository
16+ import kotlinx.coroutines.flow.Flow
17+ import kotlinx.coroutines.flow.map
1218import javax.inject.Inject
1319
1420class SearchRepositoryImpl @Inject constructor(
1521 private val searchDataSource : SearchDataSource ,
1622) : SearchRepository {
17- override suspend fun getSearchList (
23+
24+ override fun getSearchList (
1825 query : String ,
1926 sortBy : String ,
20- page : Int ,
21- size : Int ,
22- ): Result <List <SearchResult >> {
23- return runCatching {
24- searchDataSource.getSearch(
25- SearchRequestDto (
26- keyword = query,
27- sortBy = sortBy,
28- page = page,
29- size = size
30- )
31- ).result.toSearchResultList()
27+ ): Flow <PagingData <SearchResult >> {
28+ return Pager (
29+ PagingConfig (
30+ pageSize = 10 ,
31+ enablePlaceholders = false
32+ )
33+ ) {
34+ SearchPagingSource (
35+ query = query,
36+ sortBy = sortBy,
37+ dataSource = searchDataSource
38+ )
39+ }.flow.map { pagedData ->
40+ pagedData.map { it.second.toSearchResultList(it.first) }
3241 }
3342 }
3443
@@ -43,7 +52,7 @@ class SearchRepositoryImpl @Inject constructor(
4352 }
4453
4554 override suspend fun getSearchBannersList (): Result <List <SearchBanner >> =
46- kotlin. runCatching {
55+ runCatching {
4756 searchDataSource.getSearchBanners().result.toSearchBannerList()
4857 }
4958}
0 commit comments