From c45889838b4fa135cc5fd2d417def6c9cf72b672 Mon Sep 17 00:00:00 2001 From: Artemiy Solopov Date: Wed, 16 Sep 2026 16:22:00 +0300 Subject: [PATCH] Replaced Ints with Longs as database Ids. --- app/actors/auctions/AuctionPublisher.scala | 2 +- app/dao/AuctionsDAO.scala | 2 +- app/models/models.scala | 6 +++--- app/schemas/schemas.scala | 10 +++++----- compose.yaml | 7 ++++++- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/actors/auctions/AuctionPublisher.scala b/app/actors/auctions/AuctionPublisher.scala index 16c89bd..7d9ed04 100644 --- a/app/actors/auctions/AuctionPublisher.scala +++ b/app/actors/auctions/AuctionPublisher.scala @@ -22,7 +22,7 @@ object AuctionPublisher extends ActorModule with Logging { sealed trait Command private case object Ready extends Command case class Publish(auction: Auction, author: User) extends Command - private case class AuctionConfirmed(id: Int, responseTopic: String) extends Command + private case class AuctionConfirmed(id: Long, responseTopic: String) extends Command private final val topic = "auctions/created" diff --git a/app/dao/AuctionsDAO.scala b/app/dao/AuctionsDAO.scala index 2ba75dd..33a893e 100644 --- a/app/dao/AuctionsDAO.scala +++ b/app/dao/AuctionsDAO.scala @@ -43,7 +43,7 @@ class AuctionsDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvid db.run((Auctions returning Auctions) += auction) } - def changeStatus(auctionId: Int, status: AuctionStatus): Future[Boolean] = { + def changeStatus(auctionId: Long, status: AuctionStatus): Future[Boolean] = { db.run(Auctions.filter(_.id === auctionId).map(_.status).update(status)) .map(_ == 1) } diff --git a/app/models/models.scala b/app/models/models.scala index 891a0e0..a1d43e6 100644 --- a/app/models/models.scala +++ b/app/models/models.scala @@ -4,7 +4,7 @@ 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]) +case class User(id: Option[Long], username: String, gid: String, passwordDigest: Option[String]) object User { given writes: Writes[User] = new Writes[User] { override def writes(o: User): JsValue = Json.obj( @@ -14,7 +14,7 @@ object User { } } -case class AuthToken(id: Option[Int], userId: Int, token: String, createdAt: Instant, expiresAt: Instant) +case class AuthToken(id: Option[Long], userId: Long, token: String, createdAt: Instant, expiresAt: Instant) object AuthToken { given writes: OWrites[AuthToken] = (a: AuthToken) => Json.obj( "token" -> a.token, @@ -36,7 +36,7 @@ object AuctionStatus { implicit val writes: Writes[AuctionStatus] = (o: AuctionStatus) => JsString(o.toString) } -case class Auction(id: Option[Int], name: String, status: AuctionStatus, gid: String, authorId: Int, +case class Auction(id: Option[Long], name: String, status: AuctionStatus, gid: String, authorId: Long, startingPrice: BigDecimal, currentBid: Option[BigDecimal], currentBidderId: Option[Int], currentBidAt: Option[Instant], createdAt: Instant) diff --git a/app/schemas/schemas.scala b/app/schemas/schemas.scala index 9a54c74..6dd7318 100644 --- a/app/schemas/schemas.scala +++ b/app/schemas/schemas.scala @@ -8,7 +8,7 @@ import slick.model.ForeignKeyAction.{Cascade, Restrict} import java.time.Instant class UsersTable(tag: Tag) extends Table[User](tag, "users") { - def id = column[Int]("id", O.PrimaryKey, O.AutoInc) + def id = column[Long]("id", O.PrimaryKey, O.AutoInc) def gid = column[String]("gid", O.Unique) def username = column[String]("username", O.Unique) def passwordDigest = column[Option[String]]("password_digest") @@ -20,8 +20,8 @@ lazy val Users = TableQuery[UsersTable] class AuthTokensTable(tag: Tag) extends Table[AuthToken](tag, "auth_tokens") { - def id = column[Int]("id", O.PrimaryKey, O.AutoInc) - def userId = column[Int]("user_id") + def id = column[Long]("id", O.PrimaryKey, O.AutoInc) + def userId = column[Long]("user_id") def token = column[String]("token") def createdAt = column[Instant]("created_at") def expiresAt = column[Instant]("expires_at") @@ -40,11 +40,11 @@ implicit val auctionStatusColumnType: BaseColumnType[AuctionStatus] = ) class AuctionsTable(tag: Tag) extends Table[Auction](tag, "auctions") { - def id = column[Int]("id", O.PrimaryKey, O.AutoInc) + def id = column[Long]("id", O.PrimaryKey, O.AutoInc) def name = column[String]("name") def status = column[AuctionStatus]("status") def gid = column[String]("gid", O.Unique) - def authorId = column[Int]("author_id") + def authorId = column[Long]("author_id") def startingPrice = column[BigDecimal]("starting_price", O.SqlType("DECIMAL(20, 3)")) def currentBid = column[Option[BigDecimal]]("current_bid", O.SqlType("DECIMAL(20, 3)")) def currentBidderId = column[Option[Int]]("current_bidder_id") diff --git a/compose.yaml b/compose.yaml index 8d4b135..776d5c5 100644 --- a/compose.yaml +++ b/compose.yaml @@ -7,4 +7,9 @@ services: env_file: - db.env ports: - - "5432:5432" \ No newline at end of file + - "5432:5432" + volumes: + - "db:/var/lib/postgresql" + +volumes: + db: \ No newline at end of file