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
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 }
|
|
}
|
|
}
|