Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active December 15, 2015 14:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xuwei-k/5277254 to your computer and use it in GitHub Desktop.
Save xuwei-k/5277254 to your computer and use it in GitHub Desktop.
squeryl2scalikejdbc
libraryDependencies ++= Seq(
"org.squeryl" %% "squeryl" % "0.9.5-6"
)
addSbtPlugin("com.github.seratch" %% "scalikejdbc-mapper-generator" % "1.5.1")
sbtPlugin := true
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