refactor(account): update time control structure and remove deprecated fields
This commit is contained in:
@@ -10,11 +10,6 @@ post {
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
settings {
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
}
|
||||
|
||||
headers {
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{token}}
|
||||
@@ -22,9 +17,20 @@ headers {
|
||||
|
||||
body:json {
|
||||
{
|
||||
"color": "random",
|
||||
"timeControl": {
|
||||
"limitSeconds": 600,
|
||||
"incrementSeconds": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vars:pre-request {
|
||||
username: bdc
|
||||
token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJub3djaGVzcyIsInN1YiI6ImY3MGQxNDIwLTdhZmEtNGVjMy05Mzg1LWViYWU0N2U3NGY4OCIsInVzZXJuYW1lIjoicGxheWVyMSIsImlhdCI6MTc3OTE5MjkwOCwiZXhwIjoxNzc5MTkzMjA4LCJqdGkiOiJkMDhlZmRhMi01ZjliLTQyNjgtOGM3MC1iNDA2OTViNDhiMTUifQ.q68R2bUdRQ5QwEIfcP0d2g_Wac94qd4K6BzP-PC94x-tDpT3leUY8ZpqY6YzoNv-ywp5sm47-WC539DyUqdzDgPVLLSmOMjRxG-HpaNdXwsXlp8_C7KGlgkK_XSMa3Gq6S4AfUbaXbRhPg5NZz2MRosu0BY2ed0ISvmEfX5XEdBRlKgD14BIKAsEFv3tHtarFS1RGpcSoHV2oeIk_m-VHUC78N-ciNHmBH6mZna_fVHgMocOIrEsTZuUms0Zacmebvh2tAcf36xux1Bm2awJff19zReD-A2o9jucrKcM3Im5BJ6JtuWAsHEae9KLmuol6S2pldvNOmUn3egFUYz0yQ
|
||||
}
|
||||
|
||||
settings {
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import scala.compiletime.uninitialized
|
||||
|
||||
import java.time.Instant
|
||||
import java.util.UUID
|
||||
import scala.Conversion
|
||||
|
||||
@Entity
|
||||
@Table(name = "challenges")
|
||||
@@ -34,13 +33,14 @@ class Challenge extends PanacheEntityBase:
|
||||
@Column(nullable = true, columnDefinition = "varchar(255)")
|
||||
var declineReason: DeclineReason = uninitialized
|
||||
|
||||
var timeControlType: String = uninitialized
|
||||
@Column(nullable = true)
|
||||
var limitSeconds: java.lang.Integer = uninitialized
|
||||
|
||||
@Column(nullable = true)
|
||||
var timeControlLimit: java.lang.Integer = uninitialized
|
||||
var incrementSeconds: java.lang.Integer = uninitialized
|
||||
|
||||
@Column(nullable = true)
|
||||
var timeControlIncrement: java.lang.Integer = uninitialized
|
||||
var daysPerMove: java.lang.Integer = uninitialized
|
||||
|
||||
var createdAt: Instant = uninitialized
|
||||
|
||||
@@ -52,5 +52,6 @@ class Challenge extends PanacheEntityBase:
|
||||
|
||||
def gameIdOpt: Option[String] = Option(gameId)
|
||||
def declineReasonOpt: Option[DeclineReason] = Option(declineReason)
|
||||
def timeControlLimitOpt: Option[Int] = Option(timeControlLimit).map(_.intValue())
|
||||
def timeControlIncrementOpt: Option[Int] = Option(timeControlIncrement).map(_.intValue())
|
||||
def limitSecondsOpt: Option[Int] = Option(limitSeconds).map(_.intValue())
|
||||
def incrementSecondsOpt: Option[Int] = Option(incrementSeconds).map(_.intValue())
|
||||
def daysPerMoveOpt: Option[Int] = Option(daysPerMove).map(_.intValue())
|
||||
|
||||
@@ -10,7 +10,7 @@ case class PlayerInfo(id: String, name: String, rating: Int)
|
||||
|
||||
case class PublicAccountDto(id: String, username: String, rating: Int, createdAt: String)
|
||||
|
||||
case class TimeControlDto(`type`: String, limit: Option[Int], increment: Option[Int])
|
||||
case class TimeControlDto(limitSeconds: Option[Int], incrementSeconds: Option[Int], daysPerMove: Option[Int])
|
||||
|
||||
case class ChallengeRequest(color: String, timeControl: TimeControlDto)
|
||||
|
||||
|
||||
@@ -88,9 +88,9 @@ class ChallengeService:
|
||||
challenge.destUser = destUser
|
||||
challenge.color = color
|
||||
challenge.status = ChallengeStatus.Created
|
||||
challenge.timeControlType = req.timeControl.`type`
|
||||
challenge.timeControlLimit = req.timeControl.limit.map(java.lang.Integer.valueOf).orNull
|
||||
challenge.timeControlIncrement = req.timeControl.increment.map(java.lang.Integer.valueOf).orNull
|
||||
challenge.limitSeconds = req.timeControl.limitSeconds.map(java.lang.Integer.valueOf).orNull
|
||||
challenge.incrementSeconds = req.timeControl.incrementSeconds.map(java.lang.Integer.valueOf).orNull
|
||||
challenge.daysPerMove = req.timeControl.daysPerMove.map(java.lang.Integer.valueOf).orNull
|
||||
challenge.createdAt = Instant.now()
|
||||
challenge.expiresAt = Instant.now().plus(24, ChronoUnit.HOURS)
|
||||
challengeRepository.persist(challenge)
|
||||
@@ -200,10 +200,9 @@ class ChallengeService:
|
||||
if ThreadLocalRandom.current().nextBoolean() then (challenger, destUser) else (destUser, challenger)
|
||||
|
||||
private def buildTimeControl(challenge: Challenge): Option[CoreTimeControl] =
|
||||
challenge.timeControlType match
|
||||
case "unlimited" => None
|
||||
case "correspondence" => Some(CoreTimeControl(None, None, challenge.timeControlLimitOpt))
|
||||
case _ => Some(CoreTimeControl(challenge.timeControlLimitOpt, challenge.timeControlIncrementOpt, None))
|
||||
if challenge.limitSecondsOpt.isEmpty && challenge.incrementSecondsOpt.isEmpty && challenge.daysPerMoveOpt.isEmpty
|
||||
then None
|
||||
else Some(CoreTimeControl(challenge.limitSecondsOpt, challenge.incrementSecondsOpt, challenge.daysPerMoveOpt))
|
||||
|
||||
private def parseColor(raw: String): Either[ChallengeError, ChallengeColor] =
|
||||
raw.toLowerCase match
|
||||
@@ -227,7 +226,7 @@ class ChallengeService:
|
||||
destUser = PlayerInfo(c.destUser.id.toString, c.destUser.username, c.destUser.rating),
|
||||
variant = "standard",
|
||||
color = c.color.toString.toLowerCase,
|
||||
timeControl = TimeControlDto(c.timeControlType, c.timeControlLimitOpt, c.timeControlIncrementOpt),
|
||||
timeControl = TimeControlDto(c.limitSecondsOpt, c.incrementSecondsOpt, c.daysPerMoveOpt),
|
||||
status = c.status.toString.toLowerCase,
|
||||
declineReason = c.declineReasonOpt.map(_.toString.toLowerCase),
|
||||
gameId = c.gameIdOpt,
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ class ChallengeResourceTest:
|
||||
.path[String]("token")
|
||||
|
||||
private val clockBody =
|
||||
"""{"color":"random","timeControl":{"type":"clock","limit":300,"increment":5}}"""
|
||||
"""{"color":"random","timeControl":{"limitSeconds":300,"incrementSeconds":5}}"""
|
||||
|
||||
private def authed(token: String) =
|
||||
givenRequest().header("Authorization", s"Bearer $token")
|
||||
|
||||
Reference in New Issue
Block a user