diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favorites/FavoriteMedicinesResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/favorites/FavoriteMedicinesResponse.kt deleted file mode 100644 index 0630dd33c..000000000 --- a/core/model/src/main/java/com/android/mediproject/core/model/favorites/FavoriteMedicinesResponse.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.android.mediproject.core.model.favorites - - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class FavoriteMedicinesResponse( - @SerialName("medicineList") val medicineList: List, - @SerialName("message") val message: String -) { - @Serializable - data class Medicine( - @SerialName("ENTP_NAME") val entpName: String, // (주)한국얀센 - @SerialName("ID") val medicineId: Int, // 41 - @SerialName("ITEM_INGR_NAME") val itemIngrName: String, // 덱스트로메토르판브롬화수소산염수화물/슈도에페드린염산염/아세트아미노펜/클로르페니라민말레인산염 - @SerialName("ITEM_NAME") val itemName: String, // 타이레놀콜드-에스정(수출명:TylenolColdTablet,TylenolColdCaplet) - @SerialName("ITEM_SEQ") val itemSeq: String, // 200302348 - @SerialName("PRDUCT_TYPE") val productType: String, // [01140]해열.진통.소염제 - @SerialName("SPCLTY_PBLC") val medicineType: String - ) -} \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favorites/AddFavoriteMedicineResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/AddInterestedMedicineResponse.kt similarity index 66% rename from core/model/src/main/java/com/android/mediproject/core/model/favorites/AddFavoriteMedicineResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/AddInterestedMedicineResponse.kt index 9ed2c4ef3..f3d181f3f 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/favorites/AddFavoriteMedicineResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/AddInterestedMedicineResponse.kt @@ -1,11 +1,11 @@ -package com.android.mediproject.core.model.favorites +package com.android.mediproject.core.model.medicine.InterestedMedicine import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class AddFavoriteMedicineResponse( +data class AddInterestedMedicineResponse( @SerialName("favoriteMedicineID") val favoriteMedicineID: Int, // 86 @SerialName("message") val message: String ) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favorites/DeleteFavoriteMedicineResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/DeleteInterestedMedicineResponse.kt similarity index 55% rename from core/model/src/main/java/com/android/mediproject/core/model/favorites/DeleteFavoriteMedicineResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/DeleteInterestedMedicineResponse.kt index 766a07e0c..cf958afcd 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/favorites/DeleteFavoriteMedicineResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/DeleteInterestedMedicineResponse.kt @@ -1,10 +1,10 @@ -package com.android.mediproject.core.model.favorites +package com.android.mediproject.core.model.medicine.InterestedMedicine import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class DeleteFavoriteMedicineResponse( +data class DeleteInterestedMedicineResponse( @SerialName("message") val message: String ) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/favorites/IsFavoriteMedicineResponse.kt b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/IsInterestedMedicineResponse.kt similarity index 65% rename from core/model/src/main/java/com/android/mediproject/core/model/favorites/IsFavoriteMedicineResponse.kt rename to core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/IsInterestedMedicineResponse.kt index a4157ff48..79da247cb 100644 --- a/core/model/src/main/java/com/android/mediproject/core/model/favorites/IsFavoriteMedicineResponse.kt +++ b/core/model/src/main/java/com/android/mediproject/core/model/medicine/InterestedMedicine/IsInterestedMedicineResponse.kt @@ -1,11 +1,10 @@ -package com.android.mediproject.core.model.favorites - +package com.android.mediproject.core.model.medicine.InterestedMedicine import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class IsFavoriteMedicineResponse( +data class IsInterestedMedicineResponse( @SerialName("isFavorite") val isFavorite: Boolean, // false @SerialName("message") val message: String ) \ No newline at end of file diff --git a/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/AddInterestedMedicineParameter.kt b/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/AddInterestedMedicineParameter.kt new file mode 100644 index 000000000..9b88a1d27 --- /dev/null +++ b/core/model/src/main/java/com/android/mediproject/core/model/requestparameters/AddInterestedMedicineParameter.kt @@ -0,0 +1,8 @@ +package com.android.mediproject.core.model.requestparameters + +import kotlinx.serialization.Serializable + +@Serializable +data class AddInterestedMedicineParameter( + val medicineId: Long +) \ No newline at end of file diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSource.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSource.kt index 60d44633f..5e698624b 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSource.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSource.kt @@ -1,9 +1,28 @@ package com.android.mediproject.core.network.datasource.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 InterestedMedicineDataSource { - suspend fun getInterestedMedicineList() : Flow> + suspend fun getInterestedMedicineList(): Flow> + + /** + * 관심 약 추가 + */ + fun addInterestedMedicine(addInterestedMedicineParameter: AddInterestedMedicineParameter): Flow> + + /** + * 관심 약 삭제 + */ + fun deleteInterestedMedicine(medicineId: Long): Flow> + + /** + * 관심 약 여부 확인 + */ + fun isInterestedMedicine(medicineId: Long): Flow> } \ No newline at end of file diff --git a/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSourceImpl.kt b/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSourceImpl.kt index 88702e760..f953e849d 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSourceImpl.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/datasource/interestedmedicine/InterestedMedicineDataSourceImpl.kt @@ -1,19 +1,43 @@ package com.android.mediproject.core.network.datasource.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.module.AwsNetworkApi import com.android.mediproject.core.network.onResponse import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import javax.inject.Inject -class InterestedMedicineDataSourceImpl @Inject constructor(private val awsNetworkApi: AwsNetworkApi) : - InterestedMedicineDataSource { - override suspend fun getInterestedMedicineList(): Flow> = +class InterestedMedicineDataSourceImpl @Inject constructor(private val awsNetworkApi: AwsNetworkApi) : InterestedMedicineDataSource { + override suspend fun getInterestedMedicineList(): Flow> = channelFlow { + awsNetworkApi.getInterestedMedicineList().onResponse().fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }) + .also { + trySend(it) + } + } + + override fun addInterestedMedicine(addInterestedMedicineParameter: AddInterestedMedicineParameter): Flow> = channelFlow { - awsNetworkApi.getInterestedMedicineList().onResponse() + awsNetworkApi.addInterestedMedicine(addInterestedMedicineParameter).onResponse() .fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }).also { trySend(it) } } + + override fun deleteInterestedMedicine(medicineId: Long): Flow> = channelFlow { + awsNetworkApi.deleteInterestedMedicine(medicineId).onResponse() + .fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }).also { + trySend(it) + } + } + + override fun isInterestedMedicine(medicineId: Long): Flow> = channelFlow { + awsNetworkApi.isInterestedMedicine(medicineId).onResponse() + .fold(onSuccess = { Result.success(it) }, onFailure = { Result.failure(it) }).also { + trySend(it) + } + } } \ No newline at end of file diff --git a/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt b/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt index d6b26e48c..d40e9e1e2 100644 --- a/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt +++ b/core/network/src/main/java/com/android/mediproject/core/network/module/AwsNetwork.kt @@ -6,11 +6,15 @@ import com.android.mediproject.core.datastore.TokenDataSourceImpl import com.android.mediproject.core.model.comments.CommentChangedResponse import com.android.mediproject.core.model.comments.CommentListResponse import com.android.mediproject.core.model.comments.LikeResponse +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.medicine.MedicineIdResponse import com.android.mediproject.core.model.remote.sign.SignInResponse import com.android.mediproject.core.model.remote.sign.SignUpResponse import com.android.mediproject.core.model.remote.token.ReissueTokenResponse +import com.android.mediproject.core.model.requestparameters.AddInterestedMedicineParameter import com.android.mediproject.core.model.requestparameters.ChangeNicknameParameter import com.android.mediproject.core.model.requestparameters.ChangePasswordRequestParameter import com.android.mediproject.core.model.requestparameters.DeleteCommentParameter @@ -52,6 +56,7 @@ import retrofit2.http.HTTP import retrofit2.http.PATCH import retrofit2.http.POST import retrofit2.http.Path +import retrofit2.http.Query import javax.inject.Named import javax.inject.Singleton @@ -224,4 +229,28 @@ interface AwsNetworkApi { */ @GET(value = "user") suspend fun getUserInfo(): Response + + /** + * 관심 약 조회 + */ + @GET(value = "medicine/favorite") + suspend fun isInterestedMedicine( + @Query("ITEM_SEQ") itemSeq: Long + ): Response + + /** + * 관심 약 추가 + */ + @POST(value = "medicine/favorite") + suspend fun addInterestedMedicine( + @Body addInterestedMedicineParameter: AddInterestedMedicineParameter + ): Response + + /** + * 관심 약 삭제 + */ + @DELETE(value = "medicine/favorite") + suspend fun deleteInterestedMedicine( + @Query("medicineId") medicineId: Long + ): Response } \ No newline at end of file