2016-04-25 16 views
0

Ich experimentiere mit scalikejdbc (versucht, von Slick verschieben), und ich bin bei der Erstellung meines Schemas aus den Entitäten (lesen: Fall Klassen).Extrahieren DDL von Fallklassen

// 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 

Es schien wie mit SQLSyntaxSupport ein Schritt in die richtige Richtung sein könnte, mit so etwas wie

// 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? 

konnte aber nicht den nächsten Schritt herauszufinden.

Was ich suche ist das Gegenteil von dem Werkzeug unter [Reverse-Engineering] beschrieben: http://scalikejdbc.org/documentation/reverse-engineering.html

Jede Hilfe/Ideen, insbesondere Richtungen zu einem relevanten Teil der Dokumentation werden

geschätzt werden

Antwort

0

Sie können die Anweisungen von Anweisungen verwenden, um den SQL-Code zu erhalten, wie für die meisten anderen SQL-basierten Aktionen für . Schemaaktionen sind derzeit die einzigen Aktionen, die mehr als eine Anweisung erzeugen können.

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

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