15
15
*/
16
16
package com.hadilq.guidomia.database.impl
17
17
18
- import com.hadilq.guidomia.core.api.di.AppScope
19
- import com.hadilq.guidomia.database.api.CarDataEntityCommand
20
- import com.hadilq.guidomia.database.api.CarDatabaseEntity
21
- import com.squareup.anvil.annotations.ContributesBinding
18
+ import com.hadilq.guidomia.database.api.*
19
+ import com.hadilq.guidomia.di.api.AppScope
20
+ import com.hadilq.guidomia.featureflags.api.CommandCallbackImpl
21
+ import com.hadilq.guidomia.featureflags.api.CommandHook
22
+ import com.hadilq.guidomia.featureflags.api.CommandRegister
23
+ import com.hadilq.guidomia.featureflags.api.CommandShooter
24
+ import com.squareup.anvil.annotations.ContributesMultibinding
22
25
import javax.inject.Inject
23
26
24
- @ContributesBinding (AppScope ::class )
27
+ @ContributesMultibinding (AppScope ::class )
25
28
class CarDataEntityCommandImpl @Inject constructor(
26
29
private val carDao : CarDao ,
27
30
private val carEntityMapper : CarEntityMapper ,
28
- ) : CarDataEntityCommand {
31
+ private val commandShooter : CommandShooter ,
32
+ ) : CommandHook {
29
33
30
- override suspend fun getAll (): List <CarDatabaseEntity > =
34
+ private suspend fun getAll (): List <CarDatabaseEntity > =
31
35
carDao.getAll().map { carEntityMapper.map(it) }
32
36
33
37
34
- override suspend fun insertAll (cars : List <CarDatabaseEntity >) {
38
+ private suspend fun insertAll (cars : List <CarDatabaseEntity >) {
35
39
val carEntities = carDao.insertCarEntity(
36
40
* cars.map { carEntityMapper.mapToCarEntity(it) }.toTypedArray()
37
41
).mapIndexed { index, id ->
@@ -47,5 +51,24 @@ class CarDataEntityCommandImpl @Inject constructor(
47
51
}.toTypedArray())
48
52
}
49
53
50
- override suspend fun isEmpty (): Boolean = carDao.getAll().isEmpty()
54
+ private suspend fun isEmpty (): Boolean = carDao.getAll().isEmpty()
55
+
56
+ override fun hookUp (commandRegister : CommandRegister ) {
57
+
58
+ commandRegister.register(CarDataEntityCommandGetAll ::class ,
59
+ CommandCallbackImpl (commandShooter, CarDataEntityCommandGetAllResult ::class ) {
60
+ CarDataEntityCommandGetAllResult (getAll())
61
+ })
62
+
63
+ commandRegister.register(CarDataEntityCommandInsertAll ::class ,
64
+ CommandCallbackImpl (commandShooter, CarDataEntityCommandInsertAllResult ::class ) {
65
+ insertAll(it.cars)
66
+ CarDataEntityCommandInsertAllResult ()
67
+ })
68
+
69
+ commandRegister.register(CarDataEntityCommandIsEmpty ::class ,
70
+ CommandCallbackImpl (commandShooter, CarDataEntityCommandIsEmptyResult ::class ) {
71
+ CarDataEntityCommandIsEmptyResult (isEmpty())
72
+ })
73
+ }
51
74
}
0 commit comments