app/models/SnapshotId.scala (14 lines of code) (raw):

package models import play.api.libs.json.{Format, Json} case class SnapshotId(contentId: String, timestamp: String) { lazy val key = s"$contentId/$timestamp.json" lazy val infoKey = s"$contentId/$timestamp.info.json" } object SnapshotId { private val SnapshotRegEx = """([0-9a-f]{24})/(.*?).(info.)?json""".r def fromKey: String => Option[SnapshotId] = { case SnapshotRegEx(contentId, timestamp, _) => Some(SnapshotId(contentId, timestamp)) case _ => None } implicit val formats: Format[SnapshotId] = Json.format[SnapshotId] }