Sbt plugin to generate SQLpt table definitions from thrift files.
Add the following line to your project/plugins.sbt file:
addSbtPlugin("sqlpt" % "sbt-sqlpt-thrift" % "0.1")Next, you'll need to manually add the settings of the plugin to your project(s) (for some reason, I couldn't get these to get automatically added). For instance:
lazy val myProject = (project in file("."))
.settings(SqlptThriftPlugin.projectSettings) // The line you need to add.
.settings(
...
)Finally, you must define, at the very minimum, the following two settings for your project(s). Example definitions:
sqlpt.thriftDir := sourceDirectory {_ / "main" / "thrift" / "sqlpt"}.value
sqlpt.tableInfos := {case structName => sqlpt.TableInfo(structName, structName)}See the settings section for an overview of the supported keys and their meanings.
-
sqlpt.thriftDir: SettingKey[File]: Where to look for thrift definitions. The thrift structs in the .thrift files in this directory will be considered for being turned into table definitions.You must provide a value for this setting.
-
sqlpt.tableInfos: SettingKey[PartialFunction[String, sqlpt.TableInfo]]: Partial function from thrift struct names to table info. Table definitions will only be generated for structs that are in the domain of this partial function.Where
sqlpt.TableInfois defined as follows:case class TableInfo(objectName: String, tableName: String)
To paraphrase, this key serves two purposes:
- If you have a standard for translating from thrift struct names into table names (and in-code object names), you can code it up here.
- You are free to omit certain structs from translation.
You must provide a value for this setting.
-
sqlpt.outputDir: SettingKey[File]: The directory in which SQLpt table definition files will be written.Default value for most people will be
target/src_managed/main/thrift/sqlpt. -
sqlpt.thriftFieldNameToCaseClassFieldName: SettingKey[String => String]: Function for translating thrift field names into TableDef case class field names.Default value is
identity. -
sqlpt.thriftFieldNameToTableColumnName: SettingKey[String => String]: Function for translating thrift field names into database column names.Default value is
identity.