andrewoma
10/16/2015, 7:05 PMinterface NaturalKey<T: Any> {
val naturalKey: Set<Column<T, *>>
}
fun <T: Any, ID : Any, DAO: AbstractDao<T, ID>> DAO.findOrStore(value: T): T where DAO : NaturalKey<T> {
if (id(value) == defaultId) {
return findByExample(value, naturalKey).singleOrNull() ?: insert(value, defaultIdStrategy)
}
return value
}