User domain logic
This commit is contained in:
+22
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+10
@@ -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>>>
|
||||||
|
}
|
||||||
+20
@@ -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>>
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ericampire.android.androidstudycase.domain.entity
|
||||||
|
|
||||||
|
import androidx.room.Entity
|
||||||
|
import androidx.room.PrimaryKey
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
data class User(
|
||||||
|
@PrimaryKey
|
||||||
|
val id: Long? = null,
|
||||||
|
val displayName: String,
|
||||||
|
val imageUrl: String,
|
||||||
|
)
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
package com.ericampire.android.androidstudycase.domain.repository
|
||||||
|
|
||||||
|
import com.ericampire.android.androidstudycase.domain.entity.User
|
||||||
|
import com.ericampire.android.androidstudycase.util.Result
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
interface UserRepository {
|
||||||
|
suspend fun save(user: User)
|
||||||
|
fun findAll(): Flow<Result<List<User>>>
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
package com.ericampire.android.androidstudycase.domain.usecase
|
||||||
|
|
||||||
|
internal class FindUsersUseCaseTest
|
||||||
Reference in New Issue
Block a user