Processing new bid MQTT messages

This commit is contained in:
2026-09-21 15:03:45 +03:00
parent e9d1f93723
commit d90ae86e1f
6 changed files with 75 additions and 4 deletions
+13
View File
@@ -52,6 +52,19 @@ class AuctionsDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvid
.map(_ == 1)
}
def find_by_gid(gid: String): Future[Option[Auction]] = {
db.run(Auctions.filter(_.gid === gid).take(1).result.headOption)
}
def newBid(auction: Auction, bidder: User, bid: BigDecimal, timestamp: Instant): Future[Option[Auction]] = {
db.run {
Auctions.filter(_.id === auction.id.get).map{ it => (it.currentBid, it.currentBidAt, it.currentBidderId) }
.update((Some(bid), Some(timestamp), Some(bidder.id.get)))
.andThen { Auctions.filter(_.id === auction.id.get).result.headOption }
.transactionally
}
}
private def availableScope(user: User) = {
Auctions.filter(row => (row.status === AuctionStatus.Ready) && (row.authorId =!= user.id.get))
}
+4
View File
@@ -69,6 +69,10 @@ class UsersDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider,
}
}
def find_by_gid(gid: String): Future[Option[User]] = {
db.run(Users.filter(_.gid === gid).take(1).result.headOption)
}
private def argonHash(data: String) = argon2.hash(ArgonParameters.iterations, ArgonParameters.memory, ArgonParameters.parallelism, data.getBytes(UTF_8))
}