Я использую Exposed в новом проекте и замечаю, что для операторов вставки и обновления мне приходится дублировать все назначения для значений записи.
Пример:
val orderId = Orders.insert {
it[orderType] = orderDTO.orderType
it[deliveryDateTime] = LocalDateTime.of(
LocalDate.parse(orderDTO.deliveryDate),
LocalTime.parse(orderDTO.deliveryTime)
)
it[customerName] = orderDTO.customerName
it[customerPhone] = orderDTO.customerPhone
it[customerAddress] = orderDTO.customerAddress
// ... other fields
} get Orders.id
Orders.update({ Orders.id eq orderId }) {
it[orderType] = orderDTO.orderType
it[deliveryDateTime] = LocalDateTime.of(
LocalDate.parse(orderDTO.deliveryDate),
LocalTime.parse(orderDTO.deliveryTime)
)
it[customerName] = orderDTO.customerName
it[customerPhone] = orderDTO.customerPhone
it[customerAddress] = orderDTO.customerAddress
// ... other fields
}
Я пытаюсь извлечь общие назначения в лямбда-выражении или функции, но в первом случае тело имеет тип T.(InsertStatement<Number>)->Unit
, а в обновлении - T.(UpdateStatement)->Unit
, поэтому я не вижу простого способа добиться этого.
Я что-то упускаю или это сделано намеренно?