とりあえずslick

イシュー

  • slick の理解が足りていないから練習

参考

slick-case-classes

  • play-slick を使ったサンプル

    • version 0.6.0.1
  • エラー:object session is not a member of package slick

    • import scala.slick.session.Session をコメント
  • エラー

overloaded method constructor Table with alternatives: (_tableTag: scala.slick.lifted.Tag,_tableName: String)play.api.db.slick.Config.driver.Table[(Long, String)] <and> (_tableTag: scala.slick.lifted.Tag,_schemaName: Option[String],_tableName: String)play.api.db.slick.Config.driver.Table[(Long, String)] cannot be applied to (String)

参考

トラブルシューティング

small slick model

package models

import play.api.Play.current
import play.api.db.slick.Config.driver.simple._

case class Company(id: Option[Long], name: String)

class Companies(tag: Tag) extends Table[Company](tag, "COMPANY") {
  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
  def name = column[String]("name", O.NotNull)
  def * = (id.?, name) <> (Company.tupled, Company.unapply _)
}

object Companies {
  
  val companies = TableQuery[Companies]
  
  /**
   * Construct the Map[String,String] needed to fill a select options set
   */
  def options(implicit s: Session): Seq[(String, String)] = {
    val query = (for {
      company <- companies
    } yield (company.id, company.name)).sortBy(_._2)
    
    query.list.map(row => (row._1.toString, row._2))
  }

  /**
   * Insert a new company
   * @param company
   */
  def insert(company: Company)(implicit s: Session) {
    companies.insert(company)
  }

  def count(implicit s: Session): Int =
    Query(companies.length).first

}

slickのお勉強2

参考