38 lines
1.2 KiB
Scala
38 lines
1.2 KiB
Scala
package models
|
|
|
|
import play.api.libs.json.{JsString, JsValue, Json, OWrites, Writes}
|
|
|
|
import java.time.Instant
|
|
|
|
case class User(id: Option[Int], username: String, gid: String, passwordDigest: Option[String])
|
|
object User {
|
|
given writes: Writes[User] = new Writes[User] {
|
|
override def writes(o: User): JsValue = Json.obj(
|
|
"gid" -> o.gid,
|
|
"username" -> o.username
|
|
)
|
|
}
|
|
}
|
|
|
|
case class AuthToken(id: Option[Int], userId: Int, token: String, createdAt: Instant, expiresAt: Instant)
|
|
|
|
enum AuctionStatus(val value: Short) {
|
|
case Created extends AuctionStatus(0)
|
|
case Ready extends AuctionStatus(10)
|
|
case Finished extends AuctionStatus(10000)
|
|
}
|
|
|
|
object AuctionStatus {
|
|
lazy val byValue: Map[Short, AuctionStatus] = Map.from(AuctionStatus.values.map{it => (it.value, it)})
|
|
|
|
implicit val writes: Writes[AuctionStatus] = (o: AuctionStatus) => JsString(o.toString)
|
|
}
|
|
|
|
case class Auction(id: Option[Int], name: String, status: AuctionStatus, gid: String, authorId: Int,
|
|
startingPrice: BigDecimal, currentBid: Option[BigDecimal],
|
|
currentBidderId: Option[Int], currentBidAt: Option[Instant],
|
|
createdAt: Instant)
|
|
|
|
object Auction {
|
|
implicit val writes: OWrites[Auction] = Json.writes[Auction]
|
|
} |