-
Notifications
You must be signed in to change notification settings - Fork 38
/
BooksRepositoryImpl.kt
32 lines (26 loc) · 1.02 KB
/
BooksRepositoryImpl.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package dominando.android.data.repository
import dominando.android.data.mapper.Mapper
import dominando.android.data.model.BookData
import dominando.android.data.source.RoomLocalData
import dominando.android.domain.entity.Book
import dominando.android.domain.repository.BooksRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
internal class BooksRepositoryImpl(
private val localData: RoomLocalData,
private val entityMapper: Mapper<BookData, Book>,
private val dataMapper: Mapper<Book, BookData>
) : BooksRepository {
override fun loadBooks(): Flow<List<Book>> {
return localData.loadBooks().map { it.map(entityMapper::map) }
}
override fun loadBook(bookId: String): Flow<Book?> {
return localData.loadBook(bookId).map{ it?.let(entityMapper::map) }
}
override suspend fun saveBook(book: Book) {
return localData.saveBook(dataMapper.map(book))
}
override suspend fun remove(book: Book) {
return localData.remove(dataMapper.map(book))
}
}