Skip to content

Commit

Permalink
Updated the insert milestone function to update the milestone
Browse files Browse the repository at this point in the history
  • Loading branch information
janewaitara committed May 2, 2024
1 parent 3899350 commit a6e8d4b
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.mumbicodes.projectie.data.db

import androidx.room.*
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Query
import androidx.room.Upsert
import com.mumbicodes.projectie.domain.model.Milestone
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
import kotlinx.coroutines.flow.Flow

@Dao
interface MilestonesDao {

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertMilestone(milestone: Milestone)
@Upsert
suspend fun insertOrUpdateMilestone(milestone: Milestone)

/** Fetch */
@Query("SELECT * from milestones_table WHERE milestoneId = :milestoneId")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ class MilestonesRepositoryImpl(
private val milestonesDao: MilestonesDao,
) : MilestonesRepository {

override suspend fun insertMilestone(milestone: Milestone) {
milestonesDao.insertMilestone(milestone)
override suspend fun insertOrUpdateMilestone(milestone: Milestone) {
milestonesDao.insertOrUpdateMilestone(milestone)
}

override suspend fun getMilestoneByIdWithTasks(milestoneId: Int): DataResult<Flow<MilestoneWithTasks?>> =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ object UseCaseModule {
app: Application,
): MilestonesUseCases {
return MilestonesUseCases(
addMilestoneUseCase = AddMilestoneUseCase(repository),
insertOrUpdateMilestoneUseCase = InsertOrUpdateMilestoneUseCase(repository),
getMilestoneByIdWithTasksUseCase = GetMilestoneByIdWithTasksUseCase(repository),
getMilestonesUseCase = GetMilestonesUseCase(repository),
deleteMilestoneUseCase = DeleteMilestoneUseCase(repository),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.Flow

interface MilestonesRepository {

suspend fun insertMilestone(milestone: Milestone)
suspend fun insertOrUpdateMilestone(milestone: Milestone)

suspend fun getMilestoneByIdWithTasks(milestoneId: Int): DataResult <Flow<MilestoneWithTasks?>>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package com.mumbicodes.projectie.domain.use_case.milestones
import com.mumbicodes.projectie.domain.model.Milestone
import com.mumbicodes.projectie.domain.repository.MilestonesRepository

class AddMilestoneUseCase(
class InsertOrUpdateMilestoneUseCase(
private val repository: MilestonesRepository
) {
suspend operator fun invoke(milestone: Milestone) {
repository.insertMilestone(milestone)
repository.insertOrUpdateMilestone(milestone)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.mumbicodes.projectie.domain.use_case.milestones

data class MilestonesUseCases(
val addMilestoneUseCase: AddMilestoneUseCase,
val insertOrUpdateMilestoneUseCase: InsertOrUpdateMilestoneUseCase,
val getMilestoneByIdWithTasksUseCase: GetMilestoneByIdWithTasksUseCase,
val getMilestonesUseCase: GetMilestonesUseCase,
val deleteMilestoneUseCase: DeleteMilestoneUseCase,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.mumbicodes.projectie.presentation.screens.add_edit_milestone

import android.app.Application
import android.util.Log
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.State
Expand All @@ -15,7 +14,12 @@ import com.mumbicodes.projectie.domain.model.Task
import com.mumbicodes.projectie.domain.use_case.milestones.MilestonesUseCases
import com.mumbicodes.projectie.domain.use_case.projects.ProjectsUseCases
import com.mumbicodes.projectie.domain.use_case.tasks.TasksUseCases
import com.mumbicodes.projectie.presentation.util.*
import com.mumbicodes.projectie.presentation.util.MILESTONE_ID
import com.mumbicodes.projectie.presentation.util.PROJECT_ID
import com.mumbicodes.projectie.presentation.util.toDateAsString
import com.mumbicodes.projectie.presentation.util.toLocalDate
import com.mumbicodes.projectie.presentation.util.toLong
import com.mumbicodes.projectie.presentation.util.toTask
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableSharedFlow
Expand All @@ -31,7 +35,6 @@ class AddEditMilestonesViewModel @Inject constructor(
private val tasksUseCases: TasksUseCases,
private val projectsUseCases: ProjectsUseCases,
savedStateHandle: SavedStateHandle,
private val appContext: Application,
) : ViewModel() {

private val _milestoneTitleState = mutableStateOf("")
Expand Down Expand Up @@ -164,7 +167,7 @@ class AddEditMilestonesViewModel @Inject constructor(

viewModelScope.launch {

milestonesUseCases.addMilestoneUseCase(
milestonesUseCases.insertOrUpdateMilestoneUseCase(
Milestone(
projectId = passedProjectId,
milestoneId = currentMilestoneId!!,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ class AllMilestonesViewModel @Inject constructor(
val currentMilestoneStatus =
milestonesUseCases.checkMilestoneStatusUseCase.invoke(tasks)
getSuccessScreenState().data.mileStone?.let {
milestonesUseCases.addMilestoneUseCase(
milestonesUseCases.insertOrUpdateMilestoneUseCase(
it.milestone.copy(status = currentMilestoneStatus)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ class ProjectDetailsViewModel @Inject constructor(
viewModelScope.launch {
val currentMilestoneStatus =
milestonesUseCases.checkMilestoneStatusUseCase.invoke(tasks)
milestonesUseCases.addMilestoneUseCase(
milestonesUseCases.insertOrUpdateMilestoneUseCase(
state.value.mileStone.milestone.copy(
status = currentMilestoneStatus
)
Expand Down

0 comments on commit a6e8d4b

Please sign in to comment.