У меня есть запрос на основе CriteriaBuilder
, который можно упорядочить по нескольким различным свойствам.
В настоящее время он обрабатывается примерно так:
when(filters.sortBy) {
"foo" -> query.orderBy(if(isAsc) cb.asc("bar") else cb.desc("bar"))
"baz" -> query.orderBy(if(isAsc) cb.asc("quux") else cb.desc("quux"))
}
Это определенно не самый читаемыйили поддерживаемый код, который я когда-либо писал.
Есть ли лучший и, возможно, более идиоматический способ сделать это в Kotlin, учитывая, что у него нет троичного оператора ? :
?
Обратите внимание, что некоторые из свойств, которые мне нужно упорядочить, могут быть вложенными свойствами корневого объекта, поэтому просто извлечь это из метода, который принимает строку в качестве имени предложения порядка, может быть нелегко.