Skip to content

Commit

Permalink
Add workout filtering by parentGuid
Browse files Browse the repository at this point in the history
  • Loading branch information
khy committed Feb 3, 2017
1 parent e912dfc commit 2f8db84
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
Expand Up @@ -24,6 +24,7 @@ class WorkoutsController(
withRawPaginationParams { rawPaginationParams =>
workoutsService.findWorkouts(
guids = request.richQueryString.get[UUID]("guid"),
parentGuids = request.richQueryString.get[UUID]("parentGuid"),
isChild = request.richQueryString.get[Boolean]("child").flatMap(_.headOption),
rawPaginationParams
).flatMap { result =>
Expand Down
7 changes: 7 additions & 0 deletions modules/apis/workouts/app/services/WorkoutsService.scala
Expand Up @@ -46,6 +46,7 @@ class WorkoutsService(

def findWorkouts(
guids: Option[Seq[UUID]] = None,
parentGuids: Option[Seq[UUID]] = None,
isChild: Option[Boolean] = None,
rawPaginationParams: RawPaginationParams
)(implicit ec: ExecutionContext): Future[Validation[PaginatedResult[WorkoutRecord]]] = {
Expand All @@ -58,6 +59,12 @@ class WorkoutsService(
query = query.filter(_.guid inSet guids)
}

parentGuids.foreach { parentGuids =>
query = query.filter { workout =>
workout.json +>> "parentGuid" inSet parentGuids.map(_.toString)
}
}

isChild.foreach { isChild =>
if (isChild) {
query = query.filter { _.json.+>("parentGuid").?.isDefined }
Expand Down
19 changes: 19 additions & 0 deletions modules/apis/workouts/test/integration/workout/ReadSpec.scala
Expand Up @@ -84,6 +84,25 @@ class ReadSpec extends IntegrationSpec {
movements2.head.guid mustBe workout2.guid
}

"return child workouts for the specified parent" in {
testHelper.deleteWorkouts()
val workout1 = testHelper.createWorkout()
val workout2 = testHelper.createWorkout(
parentGuid = Some(workout1.guid),
score = None
)

val response = await {
unauthenticatedRequest("/workouts").withQueryString(
"parentGuid" -> workout1.guid.toString
).get()
}

val movements = response.json.as[Seq[Workout]]
movements.length mustBe 1
movements.head.guid mustBe workout2.guid
}

}

}

0 comments on commit 2f8db84

Please sign in to comment.