0

I'm following this documentation, trying to put together a simple query:

package models

import scala.slick.session.Database
import Database.threadLocalSession
import scala.slick.jdbc.{GetResult, StaticQuery => Q}
import javax.sql.DataSource
import Q.interpolation

object Data {

    case class User(user: String, password: String)

    lazy val db = Database.forName("default")

    implicit val getUserResult = GetResult(r => User(r.<<, r.<<))

    def result: Option[User] = {
        db.withSession {
            sql"SELECT user, password FROM user WHERE user = 'user' AND password = 'pass'".as[User]
        }
    }

}

Problem is, the row

sql"SELECT user, password FROM user WHERE user = 'user' AND password = 'pass'".as[User]

throws these errors:

Multiple markers at this line
    - type mismatch; found : scala.slick.jdbc.StaticQuery0[models.Data.User] required: Option[models.Data.User]
    - type mismatch; found : scala.slick.jdbc.StaticQuery0[models.Data.User] required: Option[models.Data.User]

What am I missing here?

Scala 2.10.3, Play Framework 2.2.0, Slick 1.0.1

UPDATE: Solved:

sql"SELECT user, password FROM user WHERE user = 'user' AND password = 'pass'".as[User].firstOption
Caballero
  • 11,546
  • 22
  • 103
  • 163
  • Try adding `.firstOption` after `.as[User]`? According to [these docs](http://slick.typesafe.com/doc/0.11.0/api/index.html#scala.slick.jdbc.StaticQuery0) that'll convert a `StaticQuery0[R]` into an `Option[R]`, which you want to do there. – Mikesname Oct 28 '13 at 08:12
  • @Mikesname Didn't like it, the error changed to: `value headOption is not a member of scala.slick.jdbc.StaticQuery0[models.Data.User]` – Caballero Oct 28 '13 at 08:15
  • 1
    Sorry I meant `.firstOption`. – Mikesname Oct 28 '13 at 08:15

0 Answers0