Skip to content

Commit

Permalink
Add generic Task trait, simplify TaskResolver.resolveTasks
Browse files Browse the repository at this point in the history
  • Loading branch information
khy committed Mar 9, 2017
1 parent 336534d commit e78e417
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 23 deletions.
26 changes: 5 additions & 21 deletions modules/apis/workouts/app/dsl/TaskResolution.scala
Expand Up @@ -10,33 +10,17 @@ case class ResolvedTask(

object TaskResolver {

def resolveTasks(workout: core.Workout): Stream[ResolvedTask] = {
workout.movement.map { movement =>
def resolveTasks(task: Task): Stream[ResolvedTask] = {
task.movement.map { movement =>
val resolvedTask = ResolvedTask(
reps = workout.reps.map { reps => resolveFormula(reps) },
seconds = workout.time.map { time => resolveTimeMeasurement(time) },
reps = task.reps.map { reps => resolveFormula(reps) },
seconds = task.time.map { time => resolveTimeMeasurement(time) },
movement = movement
)

Stream(resolvedTask)
}.getOrElse {
workout.tasks.map { tasks =>
tasks.toStream.flatMap(resolveTasks)
}.getOrElse(Stream.empty)
}
}

def resolveTasks(subTask: core.SubTask): Stream[ResolvedTask] = {
subTask.movement.map { movement =>
val resolvedTask = ResolvedTask(
reps = subTask.reps.map { reps => resolveFormula(reps) },
seconds = subTask.time.map { time => resolveTimeMeasurement(time) },
movement = movement
)

Stream(resolvedTask)
}.getOrElse {
subTask.tasks.map { tasks =>
task.tasks.map { tasks =>
tasks.toStream.flatMap(resolveTasks)
}.getOrElse(Stream.empty)
}
Expand Down
11 changes: 9 additions & 2 deletions modules/apis/workouts/app/models/Normalized.scala
Expand Up @@ -4,6 +4,13 @@ import java.util.UUID
import java.time.ZonedDateTime
import io.useless.account.User

trait Task {
def reps: Option[Formula]
def time: Option[Measurement]
def tasks: Option[Seq[Task]]
def movement: Option[core.TaskMovement]
}

package core {

case class Movement(
Expand All @@ -18,14 +25,14 @@ package core {
score: Option[String],
tasks: Option[Seq[SubTask]],
movement: Option[TaskMovement]
)
) extends Task

case class SubTask(
reps: Option[Formula],
time: Option[Measurement],
tasks: Option[Seq[SubTask]],
movement: Option[TaskMovement]
)
) extends Task

case class TaskMovement(
guid: UUID,
Expand Down

0 comments on commit e78e417

Please sign in to comment.