You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

30 lines
989 B

package net.aiterp.git.ykonsole2.infrastructure.testing
import net.aiterp.git.ykonsole2.domain.models.Workout
import net.aiterp.git.ykonsole2.domain.models.WorkoutRepository
import net.aiterp.git.ykonsole2.domain.models.WorkoutStatus
class InMemoryWorkoutRepository : WorkoutRepository {
private val workouts = mutableListOf<Workout>()
override fun findById(id: String): Workout? = workouts.firstOrNull { it.id == id }
override fun fetchAll(): List<Workout> = workouts.asSequence()
.map { it.copy() }
.sortedByDescending { it.createdAt }
.toList()
override fun findActive(): Workout? = workouts.asSequence()
.filter { it.status != WorkoutStatus.Disconnected }
.sortedByDescending { it.createdAt }
.firstOrNull()
override fun save(workout: Workout) {
workouts.removeIf { it.id == workout.id }
workouts += workout
}
override fun delete(workout: Workout) {
workouts.removeIf { it.id == workout.id }
}
}