package dao import models.Auction import schemas.Auctions import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider} import slick.jdbc.PostgresProfile import slick.jdbc.PostgresProfile.api.* import utils.Random import java.time.Instant import javax.inject.Inject import scala.concurrent.{ExecutionContext, Future} class AuctionsDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)(implicit val ec: ExecutionContext) extends HasDatabaseConfigProvider[PostgresProfile] { def create(name: String, startingPrice: BigDecimal, author: models.User): Future[Auction] = { val auction = Auction( id = None, name = name, gid = Random.randomBase64(24), authorId = author.id.get, startingPrice = startingPrice, currentBid = None, currentBidderId = None, currentBidAt = None, createdAt = Instant.now() ) create(auction) } def create(auction: Auction) : Future[Auction] = { db.run((Auctions returning Auctions) += auction) } }