Skip to content

Instantly share code, notes, and snippets.

@SamueldaCostaAraujoNunes
Created August 2, 2021 23:31
Show Gist options
  • Save SamueldaCostaAraujoNunes/cb3acbe494215d964c086e3472d3ebc1 to your computer and use it in GitHub Desktop.
Save SamueldaCostaAraujoNunes/cb3acbe494215d964c086e3472d3ebc1 to your computer and use it in GitHub Desktop.
package br.com.samuelnunes.rickandmortyapp.data.repository
import androidx.paging.ExperimentalPagingApi
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import br.com.samuelnunes.rickandmorty.data.local.CharacterDao
import br.com.samuelnunes.rickandmortyapp.data.entities.Character
import br.com.samuelnunes.rickandmortyapp.data.remote.CharacterRemoteMediador
import br.com.samuelnunes.rickandmortyapp.data.remote.CharacterService
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
/**
* @author Samuel da Costa Araujo Nunes
* Created 30/07/2021 at 12:57
*/
class CharacterRepository @Inject constructor(
private val service: CharacterService,
private val dao: CharacterDao
) {
@ExperimentalPagingApi
fun getCharacters(query: String): Flow<PagingData<Character>> = Pager(
config = PagingConfig(
pageSize = 20,
enablePlaceholders = false
),
pagingSourceFactory = { dao.getCharacters("%$query%") },
remoteMediator = CharacterRemoteMediador(query, dao, service)
).flow
suspend fun getCharacter(id: Int): Character = dao.getCharacter(id)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment