Last active
December 15, 2015 14:49
-
-
Save xuwei-k/5277254 to your computer and use it in GitHub Desktop.
squeryl2scalikejdbc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
libraryDependencies ++= Seq( | |
"org.squeryl" %% "squeryl" % "0.9.5-6" | |
) | |
addSbtPlugin("com.github.seratch" %% "scalikejdbc-mapper-generator" % "1.5.1") | |
sbtPlugin := true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package squeryl2scalikejdbc | |
import java.sql.{Types => JavaSqlTypes, Timestamp} | |
import org.squeryl.internals.{FieldMetaData, PosoMetaData} | |
import scalikejdbc.mapper.{Column, Table, CodeGenerator, GeneratorConfig} | |
object Main{ | |
type DataType = Int | |
type SquerylTable = org.squeryl.Table[_] | |
def fieldMetaData2Column(metadata: FieldMetaData): Column = Column( | |
name = metadata.nameOfProperty, | |
dataType = class2datatype(metadata.fieldType), | |
isNotNull = metadata.isOption, | |
isAutoIncrement = metadata.isAutoIncremented | |
) | |
def squeryTable2table(table: SquerylTable): Table = { | |
val fields = table.posoMetaData.fieldsMetaData | |
val allColumns = fields.map(fieldMetaData2Column).toList | |
allColumns foreach println | |
Table( | |
name = table.name, | |
allColumns = allColumns, | |
autoIncrementColumns = allColumns.filter(_.isAutoIncrement), | |
primaryKeyColumns = fields.filter(_.declaredAsPrimaryKeyInSchema).map(fieldMetaData2Column).toList | |
) | |
} | |
def generateModelCode(table: SquerylTable, conf: GeneratorConfig = GeneratorConfig()): String = | |
CodeGenerator(squeryTable2table(table))(conf).objectPart | |
//CodeGenerator(squeryTable2table(table))(conf).modelAll | |
val class2datatype: Map[Class[_], DataType] = Map[Class[_], DataType]( | |
classOf[Array[Any]] -> JavaSqlTypes.ARRAY , | |
classOf[Long] -> JavaSqlTypes.BIGINT , | |
classOf[java.lang.Long] -> JavaSqlTypes.BIGINT , | |
classOf[Array[Byte]] -> JavaSqlTypes.BINARY , | |
classOf[Boolean] -> JavaSqlTypes.BOOLEAN , | |
classOf[java.lang.Boolean] -> JavaSqlTypes.BOOLEAN , | |
classOf[String] -> JavaSqlTypes.CHAR , | |
classOf[BigDecimal] -> JavaSqlTypes.DECIMAL , | |
classOf[Double] -> JavaSqlTypes.DOUBLE , | |
classOf[java.lang.Double] -> JavaSqlTypes.DOUBLE , | |
classOf[Float] -> JavaSqlTypes.FLOAT , | |
classOf[java.lang.Float] -> JavaSqlTypes.FLOAT , | |
classOf[Int] -> JavaSqlTypes.INTEGER , | |
classOf[java.lang.Integer] -> JavaSqlTypes.INTEGER , | |
classOf[Short] -> JavaSqlTypes.SMALLINT , | |
classOf[java.lang.Short] -> JavaSqlTypes.SMALLINT , | |
classOf[Timestamp] -> JavaSqlTypes.TIMESTAMP , | |
classOf[Byte] -> JavaSqlTypes.TINYINT, | |
classOf[java.lang.Byte] -> JavaSqlTypes.TINYINT | |
).withDefaultValue(JavaSqlTypes.OTHER) | |
// classOf[Boolean] => JavaSqlTypes.BIT , | |
// classOf[] -> JavaSqlTypes.BLOB , | |
// classOf[] -> JavaSqlTypes.CLOB , | |
// classOf[] -> JavaSqlTypes.DATALINK , | |
// classOf[] -> JavaSqlTypes.DATE , | |
// classOf[] -> JavaSqlTypes.DISTINCT , | |
// classOf[] -> JavaSqlTypes.JAVA_OBJECT , | |
// classOf[] -> JavaSqlTypes.LONGVARBINARY | |
// classOf[] -> JavaSqlTypes.LONGVARCHAR , | |
// classOf[] -> JavaSqlTypes.NULL , | |
// classOf[] -> JavaSqlTypes.NUMERIC , | |
// classOf[] -> JavaSqlTypes.OTHER , | |
// classOf[] -> JavaSqlTypes.REAL , | |
// classOf[] -> JavaSqlTypes.REF , | |
// classOf[] -> JavaSqlTypes.STRUCT , | |
// classOf[] -> JavaSqlTypes.TIME , | |
// classOf[] -> JavaSqlTypes.VARBINARY , | |
// classOf[] -> JavaSqlTypes.VARCHAR | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment