scala - Slick 2: Delete row in slick with play framework -


this requirement should easy, don't know why not working. want delete row based on it's id using slick play framework.

i'm following example play-slick module, compiler complains value delete not member of scala.slick.lifted.query[models.tables.myentity,models.tables.myentity#tableelementtype].

my controller looks like:

def delete(id: int) = dbaction{ implicit rs =>   val q = myentity.where(_.id === id)   q.delete   ok("entity deleted") } 

i've imported play.api.db.slick.config.driver.simple._

what doing wrong?

edit:

my schema definition looks like:

class cities(tag: tag) extends table[cityrow](tag, "cities") { def * = (cod, name, state, lat, long, id) <> (cityrow.tupled, cityrow.unapply) /** maps whole row option. useful outer joins. */ def ? = (cod.?, name.?, state.?, lat, long, id.?).shaped.<>({r=>import r._; _1.map(_=>    cityrow.tupled((_1.get, _2.get, _3.get, _4, _5, _6.get)))}, (_:any) =>  throw new exception("inserting ? projection not supported."))  val cod: column[string] = column[string]("cod") val name: column[string] = column[string]("name") val state: column[int] = column[int]("state") val lat: column[option[string]] = column[option[string]]("lat") val long: column[option[string]] = column[option[string]]("long") val id: column[int] = column[int]("id", o.autoinc, o.primarykey)  /** foreign key referencing departamentos (database name fk_ciudades_departamentos1) */ lazy val statefk = foreignkey("fk_cities_states", state, states)(r => r.idstate, onupdate=foreignkeyaction.noaction, ondelete=foreignkeyaction.noaction) } 

i had @ example time ago , looked wrong me too, not sure wether doing wrong myself or not, delete function bit tricky right, expecially using lifted.query (like doing). later in process made work importing right drivers, in case scala.slick.driver.postgresdriver.simple._.

edit after comment:

probably have error in shape function, hard without looking @ schema declaration. example:

case class cityrow(id: long, name: string) {  class city(tag: tag) extends table[cityrow](tag, "city") {    def * = (id, name) <>(cityrow.tupled, cityrow.unapply)     ^this shape function.    def ? = (id.?, name).shaped.<>({     r => import r._       _1.map(_ => cityrow.tupled((_1.get, _2)))   }, (_: any) => throw new exception("inserting ? projection not supported."))    val id: column[long] = column[long]("id", o.autoinc, o.primarykey)   val name: column[string] = column[string]("name") } 

Comments