Scala, postgresql - problem z zapisem do bazy danych

0

Robię prostego cruda w scali, playu, z użyciem postgresql, ale za cholerę żadne dane nie chcą się zapisać do bazy. Połączenie tworzy się przy starcie apki, ale sam insert nie wyrzuca na konsole żadnych logów, ani nic się w tabeli nie zapisuje.
Dorzucam kod, jak ktoś może się na tym zna lepiej, albo się z czymś takim zetknął to proszę o pomoc.

application.conf

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/shop"
db.default.username="postgres"
db.default.password="root"
play.evolutions.enabled=true

product.scala (model i operacje crud'owe)

case class Product(id: Option[Long], name: String, description: String, price: BigDecimal, amount: Int)

class ProductTableDef(tag: Tag) extends Table[Product](tag, "product") {

  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)

  def name = column[String]("name")

  def description = column[String]("description")

  def price = column[BigDecimal]("price")

  def amount = column[Int]("amount")

  override def * =
    (id.?, name, description, price, amount) <> (Product.tupled, Product.unapply)
}

object Products {

  val products = TableQuery[ProductTableDef]

  private def db: Database = Database.forDataSource(DB.getDataSource())

  def add(product: Product): Future[Int] = {
    db.run(products += product)
  }

  def delete(id: Long): Future[Int] = {
    db.run(products.filter(_.id === id).delete)
  }

  def get(id: Long): Future[Option[Product]] = {
    db.run(products.filter(_.id === id).result.headOption)
  }

  def listAll: Future[Seq[Product]] = {
    db.run(products.result)
  }
}

service:

 def addProduct(product: Product): Future[Int] = {
    Products.add(product)
  }

controller:

def create() = Action(parse.json) { request =>
    val name = (request.body \ "name").as[String]
    val description = (request.body \ "description").as[String]
    val price = (request.body \ "price").as[BigDecimal]
    val amount = (request.body \ "amount").as[Int]

    val product = Product(None,name, description, price, amount)
    ProductService.addProduct(product)    
    Ok("name : " + product.name)
  }

Dodam, ze jest to restowy serwer, dane sysyłam json'em i sam obiekt Produkt się tworzy z tych danych. Problem jest później, przy insercie.
Wołam @Wibowit bo kojarze, że ogarnia scalę

3

Kod wygląda w miarę OK, więc dorobiłbym po prostu więcej debug logów samemu. Np w metodzie Products.add na początku dodałbym linię typu:
log.info("wchodzimy do Products.add")
a na samym wyniku db.run też bym zapiął loga, np:
ProductService.addProduct(product).foreach(count => log.info(s"wstawione wiersze: $count"))

Slick wyrzuca sporo logów, ale na poziomie DEBUG. Slick 3.2.0 wypisuje u mnie cały proces tworzenia zapytań, ich odpalanie i część wyników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1