我有一个类似于以下内容的Slick 3.0表定义:
case class Simple(a: String, b: Int, c: Option[String])
trait Tables { this: JdbcDriver =>
import api._
class Simples(tag: Tag) extends Table[Simple](tag, "simples") {
def a = column[String]("a")
def b = column[Int]("b")
def c = column[Option[String]]("c")
def * = (a, b, c) <> (Simple.tupled, Simple.unapply)
}
lazy val simples = TableQuery[Simples]
}
object DB extends Tables with MyJdbcDriver
Run Code Online (Sandbox Code Playgroud)
我希望能做两件事:
Seq[String]Simple,生成一个 Seq[String]与使用原始查询将数据插入数据库的方式相对应(例如,Simple("hello", 1, None)变为Seq("'hello'", "1", "NULL"))使用Slick表定义执行此操作的最佳方法是什么?
我有一组类型,每个类型都有自己的类型成员:
sealed trait FieldType {
type Data
def parse(in: String): Option[Data]
}
object Name extends FieldType {
type Data = String
def parse(in: String) = Some(in)
}
object Age extends FieldType {
type Data = Int
def parse(in: String) = try { Some(in.toInt) } catch { case _ => None }
}
Run Code Online (Sandbox Code Playgroud)
我有一组在FieldTypes的集合上运行的类型(使用样板而不是抽象的arity):
sealed trait Schema {
type Schema <: Product
type Data <: Product
val schema: Schema
def read(in: Seq[String]): Option[Data]
}
trait Schema1 extends Schema { …Run Code Online (Sandbox Code Playgroud)