scala slick scalaquery

scala - Slick y filtrado por columnas de opción



scalaquery (1)

Esto no es bonito (la parte sobre null.asInstanceOf ), pero creo que funcionará. Obtuve esa idea de una antigua publicación de Scala Query, así que no sé si slick alguna vez puso algo mejor en eso, pero cuando miré la selectStatement de selectStatement resultante de la consulta, se veía correcta:

val now = new java.sql.Date(System.currentTimeMillis()) val query = for { role <- UserRole if (role.endDate === null.asInstanceOf[Option[java.sql.Date]] || role.endDate > now) } yield role

EDITAR

Gracias al comentario de @MartinKolinek, este código también funcionará y es mucho más limpio y probablemente la mejor manera de hacer las cosas:

val now = new java.sql.Date(System.currentTimeMillis()) val query = for { role <- UserRole if (role.endDate.isNull || role.endDate > now) } yield role

Estoy tratando de filtrar contra una columna de fecha opcional con Scala Slick 1.0.1.

Puede que simplemente no lo vea, pero tengo una tabla que se parece a esto:

case class UserRole(id:UUID, userID:UUID, role:String) object UserRole extends Table[UserRole]("User_Role") { //(id: Long = 0l, name: String, active: Boolean) extends KeyedEntity[Long] { def id = column[UUID]("ID", O.PrimaryKey) def userID = column[UUID]("user_id") def vendorID = column[UUID]("vendor_id") def role = column[String]("role") def user = foreignKey("user_FK", userID, User)(_.id) def start = column[java.sql.Date]("startDate") def endDate = column[Option[java.sql.Date]]("endDate") def * = id ~ userID ~ role <> (UserRole.apply _, UserRole.unapply _) }

Verás allí que la fecha final es opcional.

¿Cómo construyo una consulta donde filtre para que endDate pueda ser NULL / None o mayor que la fecha actual (db)? Para su información, en general estoy usando la API incrustada

Gracias