scala slick requête valeur de retour

Je suis plutôt nouveau à la Scala et ont été aux prises avec slick et ne peut pas voir comment retourner les résultats d'une requête à l'appel de la méthode

J'ai un simple UserDto

case class UserDto(val firstName:String,
  val lastName:String,
  val userName:String,
  val isAdmin:Boolean) {}

un objet de table Utilisateur

object User extends Table[(String, String, String, Boolean)]("USER") {

  def firstName = column[String]("FIRST_NAME")
  def lastName = column[String]("LAST_NAME")
  def userName = column[String]("USER_NAME")
  def admin = column[Boolean]("IS_ADMIN")

  def * = firstName ~ lastName ~ userName ~ admin

}

et une classe de requête

class UserQuerySlickImpl(dataSource:DataSource) {

  def getResults(userName:String):Option[UserDto] = {
    var resultDto:Option[UserDto] = None

    Database.forDataSource(dataSource) withSession {
      val q = for {u <- User if u.userName is userName}
      yield (u.firstName, u.lastName, u.userName, u.admin)

      for (t <- q) {
        t match {
          case (f:String, l:String, u:String, a:Boolean) => 
            resultDto = Some(new UserDto(f, l, u, a))
        }
      }
    }
    resultDto
  }
}

Je peux interroger la base de données et un utilisateur qui correspond au nom d'utilisateur, mais la seule façon que je pouvais comprendre comment retourner que l'utilisateur est par la création d'une var à l'extérieur de la Database.forDataSource....{}.

Est-il une meilleure façon de ne pas utiliser le var, mais renvoie la resultDto directement.

aussi est-il un moyen de construire la UserDto directement à partir de la première, pour la compréhension plutôt que d'avoir besoin de la deuxième (t <- q) ...

Je suis en utilisant slick_2.10.0-M7, version 0.11.1.

source d'informationauteur Doug Anderson