in fapi-client/src/main/scala/com/gu/facia/api/contentapi/IdsSearchQueries.scala [11:31]
def makeBatches(ids: Seq[Id]): Option[Seq[Seq[Id]]] = {
def batchAndRemaining(ids: Seq[Id]): Option[(Seq[Id], Seq[Id])] =
ids.inits.find{ init =>
init.length <= MaxBatchSize
} map { batch =>
(batch, ids.drop(batch.length))
}
@tailrec
def iter(ids: Seq[Id], accumulator: Seq[Seq[Id]]): Option[Seq[Seq[Id]]] = {
if (ids.isEmpty) {
Some(accumulator)
} else batchAndRemaining(ids) match {
case None => None
case Some((batch, remaining)) =>
iter(remaining, accumulator :+ batch)
}
}
iter(ids, Seq.empty)
}