#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
'๊ฐ๋ฐ ์ผ์ง ๐ป > Swemo' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Nutri Capture - item ์ถ๊ฐใ์ ๊ฑฐ ์ ๋๋ฉ์ด์ (0) | 2024.12.15 |
|---|---|
| Nutri Capture - INSERT ๋ฐ DELETE ๋ฒํผ ๊ตฌํ (1) | 2024.11.28 |
| Nutri Capture - DAO ์ ๋ ผ๋ฆฌ์ ์ค๋ฅ ์์ (0) | 2024.11.26 |
| Nutri Capture - ๋ฌดํ ์คํฌ๋กค ๋ก์ง ๋ฆฌํฉํ ๋ง (1) | 2024.11.16 |
| Nutri Capture - Room ๋ฌด๊ฒฐ์ฑ ๋ณด์ (1) | 2024.11.15 |