Type-Safe and Serializable SQL Queries using Scala Case Classes