2016-04-25 1 views
0

Я экспериментирую с scalikejdbc (пытаюсь перейти от Slick), и я зациклился на создании моей схемы из сущностей (чтение: классы case).Извлечение DDL из классов case

// example Slick equivalent 

case class X(id: Int, ...) 

class XTable(tag: Tag) extends Table[X] (tag, "x") { 
    def id = column[Int]("id") 
    ... //more columns 

    def * = (id, ...) <> (X.tupled, X.unapply) 
} 

val xTable = TableQuery[XTable] 

db.run(xtable.schema.create) //creates in the DB a table named "x", with "id" and all other columns 

Казалось, что с помощью SQLSyntaxSupport может быть шагом в правильном направлении, с чем-то вроде

// scalikejdbc 

case class X (id: Int, ...) 

object X extends SQLSyntaxSupport[X] { 
    def apply (x: ResultName[X])(rs: WrappedResultSet): X = new X(id = rs.get(x.id, ...)) 
} 

X.table.??? // what to do now? 

, но не мог понять, следующий шаг.

Что я ищу является противоположностью инструмента, описанного в [реверс-инжинирингом]: http://scalikejdbc.org/documentation/reverse-engineering.html

Любая помощь/идеи, в частности, направления к соответствующей части документации, будут оценены

ответ

0

Вы можете использовать метод операторов для получения кода SQL, например, для большинства других SQL-действий. В настоящее время действиями схемы являются только Действия, которые могут выдавать более одного оператора.

schema.create.statements.foreach(println) 
schema.drop.statements.foreach(println) 

http://slick.typesafe.com/doc/3.0.0/schemas.html