Я пытаюсь создать условный запрос, используя Spring DatabaseClient в spring-data-r2dbc.
Пока у меня есть реализация ниже.
Здесь я должен убедиться, что должен быть хотя бы один аргумент ненулевого фильтра. Что делает код немного громоздким для работы.
Есть ли способ, которым я могу определить пустой критерий, а затем добавить критерий к нему на основе условий?
fun search(filter: IssueFilter): Flux<Issue> =
if (filter.issueType != null) {
var criteria = filter.issueType.let { where("issueType").`is`(it) }
criteria = filter.filePath.let { criteria.and("filePath").like("%$it%") }
criteria = filter.endpoint.let { criteria.and("endpoint").like("%$it%") }
db.select().from(Issue::class.java)
.matching(criteria)
.fetch().all()
} else
all()