Nutri Capture ๋ฐฑ์๋ - DeleteDayMeal ์ด๋ฒคํธ ์ถ๊ฐ
#1 ๊ฐ์
์ต๊ทผ ํ๋ก ํธ์๋์์๋ DayMealView ํ ์ด๋ธ๋ง์ ์ฌ์ฉํ๋ฏ๋ก, NutrientViewModelEvent.kt์ ์ ์ํด๋์๋ DeleteMeal()์ด ์ฌ์ฉ๋ ์ผ์ด ์๋ค. ๋ฐ๋ผ์, DeleteDayMeal() ์ด๋ฒคํธ๋ฅผ ์๋ก ๋ง๋ ๋ค.
#2 ์ฝ๋
#2-1 NutrientViewModelEvent.kt
...
sealed class NutrientViewModelEvent {
...
data class DeleteMeal(val meal: Meal) : NutrientViewModelEvent()
data class DeleteDayMeal(val dayMeal: DayMealView) : NutrientViewModelEvent()
}
๋ณธ ๊ฒ์๊ธ์ ๋ชฉ์ ๊ณผ ๋ณ๊ฐ๋ก, NutrientViewModelEvent์ ์ ์ํ๋ DeleteMeal() ์ด๋ฒคํธ์ ์ธ ๋ฐ ์์ด Dateํ ์ธ์๊ฐ ์์๋ค. ์ญ์ ํ๋ค.
#2-2 NutrientViewModel.kt
...
class NutrientViewModel(private val repository: MainRepository) : ViewModel() {
...
// (4) View๋ก๋ถํฐ ๋ฐ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
fun onEvent(event: NutrientViewModelEvent) {
when (event) {
...
is NutrientViewModelEvent.DeleteDayMeal -> {
viewModelScope.launch {
var deletedRowCount = 0
deletedRowCount = repository.deleteDayMeal(event.dayMeal)
if (deletedRowCount == 1) {
_nutrientScreenState.value.dayMeals.removeIf { it.mealId == event.dayMeal.mealId }
}
}
}
}
}
}
...
#2-3 MainRepository.kt
...
class MainRepository(private val dao: MainDAO) {
...
suspend fun deleteMeal(meal: Meal): Int {
val deletedRowCount = dao.deleteMeal(meal)
if (deletedRowCount == 0) {
return 0
} else {
val mealCount = dao.getMealCountForDay(meal.dayId)
if (mealCount == 0) {
dao.deleteDay(meal.dayId)
}
return deletedRowCount
}
}
...
suspend fun deleteDayMeal(dayMeal: DayMealView): Int {
val deletedRowCount = dao.deleteMeal(dayMeal.mealId)
if (deletedRowCount == 0) {
return 0
} else {
val mealCount = dao.getMealCountForDay(dayMeal.dayId)
if (mealCount == 0) {
dao.deleteDay(dayMeal.dayId)
}
return deletedRowCount
}
}
}
๊ธฐ์กด์ ์๋ deleteMeal() ํจ์๋ฅผ ์ฐธ์กฐํด, deleteDayMeal() ํจ์๋ฅผ ๋ง๋ค์๋ค.
#2-4 MainDAO.kt
...
@Dao
interface MainDAO {
...
@Delete
suspend fun deleteMeal(meal: Meal): Int
@Query("DELETE FROM meal_table WHERE meal_id = :mealId")
suspend fun deleteMeal(mealId: Long): Int
...
}
mealId๋ฅผ ์ธ์๋ก ๋ฐ๋ deleteMeal() ํจ์๋ฅผ ์ถ๊ฐํ๋ค (๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ). ์์ ์๋ deleteMeal()์ #2-3 ์ฝ๋ ์ deleteMeal()์ด ์ฌ์ฉํ๊ณ , ์๋์ ์๋ deleteMeal()์ #2-3 ์ฝ๋ ์ deleteDayMeal()์ด ์ฌ์ฉํ๋ค.
#3 ์์ฝ
NutrientViewModelEvent.DeleteDayMeal ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ๋ค.
#4 ์์ฑ๋ ์ฑ
#4-1 ์ด ๊ฒ์๊ธ ์์ ์ Commit
GitHub - Kanmanemone/nutri-capture-new
Contribute to Kanmanemone/nutri-capture-new development by creating an account on GitHub.
github.com
#4-2 ๋ณธ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ต์ Commit
GitHub - Kanmanemone/nutri-capture-new
Contribute to Kanmanemone/nutri-capture-new development by creating an account on GitHub.
github.com