User domain logic

This commit is contained in:
2021-09-06 22:59:40 +02:00
parent e912b03af4
commit 605659a224
7 changed files with 94 additions and 0 deletions
@@ -0,0 +1,22 @@
package com.ericampire.android.androidstudycase.data.datasource.user
import com.ericampire.android.androidstudycase.data.room.UserDao
import com.ericampire.android.androidstudycase.domain.entity.User
import com.ericampire.android.androidstudycase.util.Result
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
class LocalUserDataSource @Inject constructor(
private val dao: UserDao
) : UserDataSource {
override suspend fun save(user: User) {
dao.save(user)
}
override fun findAll(): Flow<Result<List<User>>> {
return dao.findAll().map {
Result.Success(it)
}
}
}
@@ -0,0 +1,10 @@
package com.ericampire.android.androidstudycase.data.datasource.user
import com.ericampire.android.androidstudycase.domain.entity.User
import com.ericampire.android.androidstudycase.util.Result
import kotlinx.coroutines.flow.Flow
interface UserDataSource {
suspend fun save(user: User)
fun findAll(): Flow<Result<List<User>>>
}
@@ -0,0 +1,20 @@
package com.ericampire.android.androidstudycase.data.repository
import com.ericampire.android.androidstudycase.data.datasource.user.UserDataSource
import com.ericampire.android.androidstudycase.domain.entity.User
import com.ericampire.android.androidstudycase.domain.repository.UserRepository
import com.ericampire.android.androidstudycase.util.Result
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
class UserRepositoryImpl @Inject constructor(
private val localDataSource: UserDataSource
) : UserRepository {
override suspend fun save(user: User) {
return localDataSource.save(user)
}
override fun findAll(): Flow<Result<List<User>>> {
return localDataSource.findAll()
}
}
@@ -0,0 +1,17 @@
package com.ericampire.android.androidstudycase.data.room
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.ericampire.android.androidstudycase.domain.entity.User
import kotlinx.coroutines.flow.Flow
@Dao
interface UserDao {
@Insert
fun save(user: User)
@Query("SELECT * FROM User")
fun findAll(): Flow<List<User>>
}