diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepository.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepository.kt index d82fe7bc2..c906ff667 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepository.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepository.kt @@ -1,9 +1,19 @@ package com.android.mediproject.core.data.remote.interestedmedicine +import com.android.mediproject.core.model.medicine.InterestedMedicine.AddInterestedMedicineResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.DeleteInterestedMedicineResponse import com.android.mediproject.core.model.medicine.InterestedMedicine.InterestedMedicineListResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.IsInterestedMedicineResponse +import com.android.mediproject.core.model.requestparameters.AddInterestedMedicineParameter import kotlinx.coroutines.flow.Flow interface InterestedMedicineRepository { - suspend fun getInterestedMedicineList() : Flow>> + suspend fun getInterestedMedicineList(): Flow>> + + fun addInterestedMedicine(addInterestedMedicineParameter: AddInterestedMedicineParameter): Flow> + + fun deleteInterestedMedicine(medicineId: Long): Flow> + + fun isInterestedMedicine(itemSeq: Long): Flow> } \ No newline at end of file diff --git a/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepositoryImpl.kt b/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepositoryImpl.kt index f3968ff98..dc93f2799 100644 --- a/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepositoryImpl.kt +++ b/core/data/src/main/java/com/android/mediproject/core/data/remote/interestedmedicine/InterestedMedicineRepositoryImpl.kt @@ -1,6 +1,10 @@ package com.android.mediproject.core.data.remote.interestedmedicine +import com.android.mediproject.core.model.medicine.InterestedMedicine.AddInterestedMedicineResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.DeleteInterestedMedicineResponse import com.android.mediproject.core.model.medicine.InterestedMedicine.InterestedMedicineListResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.IsInterestedMedicineResponse +import com.android.mediproject.core.model.requestparameters.AddInterestedMedicineParameter import com.android.mediproject.core.network.datasource.interestedmedicine.InterestedMedicineDataSource import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow @@ -11,12 +15,18 @@ import javax.inject.Inject class InterestedMedicineRepositoryImpl @Inject constructor(private val interestedMedicineDataSource: InterestedMedicineDataSource) : InterestedMedicineRepository { - override suspend fun getInterestedMedicineList(): Flow>> = - channelFlow { - interestedMedicineDataSource.getInterestedMedicineList().map { result -> - result.fold( - onSuccess = { Result.success(it.medicineList) }, - onFailure = { Result.failure(it) }) - }.collectLatest { trySend(it) } - } + override suspend fun getInterestedMedicineList(): Flow>> = channelFlow { + interestedMedicineDataSource.getInterestedMedicineList().map { result -> + result.fold(onSuccess = { Result.success(it.medicineList) }, onFailure = { Result.failure(it) }) + }.collectLatest { trySend(it) } + } + + override fun addInterestedMedicine(addInterestedMedicineParameter: AddInterestedMedicineParameter): Flow> = + interestedMedicineDataSource.addInterestedMedicine(addInterestedMedicineParameter) + + override fun deleteInterestedMedicine(medicineId: Long): Flow> = + interestedMedicineDataSource.deleteInterestedMedicine(medicineId) + + override fun isInterestedMedicine(itemSeq: Long): Flow> = + interestedMedicineDataSource.isInterestedMedicine(itemSeq) } \ No newline at end of file diff --git a/core/domain/src/main/java/com/android/mediproject/core/domain/GetInterestedMedicineUseCase.kt b/core/domain/src/main/java/com/android/mediproject/core/domain/GetInterestedMedicineUseCase.kt index f4b5cd0cf..6379b30d7 100644 --- a/core/domain/src/main/java/com/android/mediproject/core/domain/GetInterestedMedicineUseCase.kt +++ b/core/domain/src/main/java/com/android/mediproject/core/domain/GetInterestedMedicineUseCase.kt @@ -1,7 +1,12 @@ package com.android.mediproject.core.domain import com.android.mediproject.core.data.remote.interestedmedicine.InterestedMedicineRepository +import com.android.mediproject.core.model.medicine.InterestedMedicine.AddInterestedMedicineResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.DeleteInterestedMedicineResponse +import com.android.mediproject.core.model.medicine.InterestedMedicine.IsInterestedMedicineResponse import com.android.mediproject.core.model.medicine.InterestedMedicine.toInterestedMedicineDto +import com.android.mediproject.core.model.requestparameters.AddInterestedMedicineParameter +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.map @@ -11,9 +16,25 @@ class GetInterestedMedicineUseCase @Inject constructor(private val interestedMed suspend fun getInterestedMedicineList() = channelFlow { interestedMedicineRepository.getInterestedMedicineList().map { result -> - result.fold( - onSuccess = { Result.success(it.map { it.toInterestedMedicineDto() }) }, - onFailure = { Result.failure(it) }) + result.fold(onSuccess = { Result.success(it.map { it.toInterestedMedicineDto() }) }, onFailure = { Result.failure(it) }) }.collectLatest { trySend(it) } } + + /** + * 관심 약 추가 + */ + fun addInterestedMedicine(addInterestedMedicineParameter: AddInterestedMedicineParameter): Flow> = + interestedMedicineRepository.addInterestedMedicine(addInterestedMedicineParameter) + + /** + * 관심 약 삭제 + */ + fun deleteInterestedMedicine(medicineId: Long): Flow> = + interestedMedicineRepository.deleteInterestedMedicine(medicineId) + + /** + * 관심 약 여부 확인 + */ + fun isInterestedMedicine(medicineId: Long): Flow> = + interestedMedicineRepository.isInterestedMedicine(medicineId) } \ No newline at end of file