Squash is a data access and manipulation DSL library for relational databases.
Define tables:
object Cities : TableDefinition() {
val id = integer("id").autoIncrement()
val name = varchar("name", 50)
}
object Citizens : TableDefinition() {
val id = varchar("id", 10).primaryKey()
val name = varchar("name", length = 50)
val cityId = reference(Cities.id, "city_id").nullable()
}
Insert data:
insertInto(Citizens).values {
it[id] = "eugene"
it[name] = "Eugene"
it[cityId] = munichId
}.execute()
Query tables:
val row = from(Citizens)
.where { Citizens.id eq "eugene" }
.select(Citizens.name, Citizens.id)
.execute()
.single()
assertEquals("eugene", row[Citizens.id])
assertEquals("Eugene", row[Citizens.name])
Join:
from(Citizens)
.innerJoin(Cities) { Cities.id eq Citizens.cityId }
.select(Citizens.name, Cities.name)