A set of reusable components we use in our scala programs.
Add this to your SBT config:
// resolver
val jirafeSnaps = "jirafe.com" at "https://raw.github.com/jirafe/mvn-repo/master/releases"
// dependency
val jiraniumAnorm = "com.jirafe" %% "jiranium-anorm" % "1.0"
import jiranium.anorm.SqlParsers._
val mapping =
optInt("my_table.plan_id") ~ // parses an Option[Int]
dateTime("my_table.created_t_stamp") // parses a joda.org.time.DateTime
See more parsers at play/src/main/scala/SqlParser.scala
import jiranium.anorm.Query
// insert in my_table
Query.insert("my_table")('foo -> "omg", 'bar -> "ponies!!").execute()
// is equivalent to:
SQL("""insert into %s (foo, bar) values ({foo}, {bar})""" format "my_table")
.on('foo -> "omg", 'bar -> "ponies!!")
.execute()
It also supports type cast
Query.insert("my_table") {
'user_id -> "::uuid" -> userId,
'offset -> "* '1s'::interval" -> offset
}
Query.timestamp(dateTime: DateTime): java.sql.Timestamp
import jiranium.anorm.implicits._
// String.formatSql
"select a.omg, b.ponies from %s a, %s b".formatSql("table1", "table2")
// is equivalent to:
SQL("select a.omg, b.ponies from %s a, %s b".format("table1", "table2"))
This section is intended to Jirafe developers. First of all, increment the version number in project/Build.scala. Then publish and push to github mvn-repo:
sbt publish
cd /path/to/mvn-repo
cp -r ~/.m2/repository/releases/com/jirafe/jiranium-anorm_2.9.1/* releases/com/jirafe/jiranium-anorm_2.9.1/
git add releases/com/jirafe/jiranium-anorm_2.9.1/
git commit -m "publish jiranium"
git push
cd -