fix game search date field
This commit is contained in:
parent
6ca36c6aa7
commit
6aa83ffe70
|
@ -4,6 +4,7 @@ import chess.{ Mode }
|
|||
import org.joda.time.DateTime
|
||||
import play.api.data._
|
||||
import play.api.data.Forms._
|
||||
import play.api.data.validation.Constraints
|
||||
|
||||
import lila.common.Form._
|
||||
import lila.search.Range
|
||||
|
@ -32,8 +33,8 @@ private[gameSearch] final class DataForm {
|
|||
"aiLevelMax" -> optional(numberIn(Query.aiLevels)),
|
||||
"durationMin" -> optional(numberIn(Query.durations)),
|
||||
"durationMax" -> optional(numberIn(Query.durations)),
|
||||
"dateMin" -> optional(dateConstraint),
|
||||
"dateMax" -> optional(dateConstraint),
|
||||
"dateMin" -> DataForm.dateField,
|
||||
"dateMax" -> DataForm.dateField,
|
||||
"status" -> optional(numberIn(Query.statuses)),
|
||||
"analysed" -> optional(number),
|
||||
"sort" -> optional(mapping(
|
||||
|
@ -43,6 +44,15 @@ private[gameSearch] final class DataForm {
|
|||
)(SearchData.apply)(SearchData.unapply)) fill SearchData()
|
||||
}
|
||||
|
||||
private[gameSearch] object DataForm {
|
||||
|
||||
val DateDelta = """^(\d+)(\w)$""".r
|
||||
private val dateConstraint = Constraints.pattern(
|
||||
regex = DateDelta,
|
||||
error = "Invalid date.")
|
||||
val dateField = optional(nonEmptyText.verifying(dateConstraint))
|
||||
}
|
||||
|
||||
private[gameSearch] case class SearchData(
|
||||
players: SearchPlayer = SearchPlayer(),
|
||||
winnerColor: Option[Int] = None,
|
||||
|
@ -90,7 +100,8 @@ private[gameSearch] case class SearchData(
|
|||
|
||||
def nonEmptyQuery = Some(query).filter(_.nonEmpty)
|
||||
|
||||
private val DateDelta = """^(\d+)(\w)$""".r
|
||||
import DataForm.DateDelta
|
||||
|
||||
private def toDate(delta: String): Option[DateTime] = delta match {
|
||||
case DateDelta(n, "h") => parseIntOption(n) map DateTime.now.minusHours
|
||||
case DateDelta(n, "d") => parseIntOption(n) map DateTime.now.minusDays
|
||||
|
@ -99,9 +110,6 @@ private[gameSearch] case class SearchData(
|
|||
case DateDelta(n, "y") => parseIntOption(n) map DateTime.now.minusYears
|
||||
case _ => None
|
||||
}
|
||||
private val dateConstraint = Constraints.pattern(
|
||||
regex = DateDelta,
|
||||
error = "Invalid date.")
|
||||
}
|
||||
|
||||
private[gameSearch] case class SearchPlayer(
|
||||
|
|
Loading…
Reference in a new issue