Slick 3.0.0 - atualiza a linha apenas com valores não nulos

Tendo uma tabela com as colunas

class Data(tag: Tag) extends Table[DataRow](tag, "data") {
  def id = column[Int]("id", O.PrimaryKey)
  def name = column[String]("name")
  def state = column[State]("state")
  def price = column[Int]("price")

  def * = (id.?, name, state, price) <> ((DataRow.apply _).tupled, DataRow.unapply)
}

Gostaria de escrever uma função que selecionaria uma única linha e atualizar as colunas onde os valores fornecidos não são nulos.

def update(id: Int, name: Option[String], state: Option[State], price: Option[Int])

por exemplo.

update(1, None, None, Some(5)) atualizaria apenas o preço da linha de dados 1, deixando intacto o nome e o estado

update(1, Some("foo"), None, Some(6)) atualizaria o nome e o preço, mas deixaria seu estado intacto.

Eu acho que algum mapeamento inteligente pode ser usado, mas estou tendo dificuldade para expressá-lo, não tenho certeza de como poderia citar tuplas de comprimento diferentes, dependendo das entradas (independentemente de seu valor ser definido), pois elas são mais ou menos "não relacionadas" "aulas.

def update(id: Int, name: Option[String], state: Option[State], price: Option[Int]) = {
  table.fiter(_.id == id). ???? .update(name, state, price)
}

questionAnswers(3)

yourAnswerToTheQuestion