Невозможно повторно использовать функцию для фильтрации quill SQL - PullRequest
1 голос
/ 14 января 2020

У меня есть класс дел Employee

 case class Employee(id: Int, 
                     name: String, 
                     age: Int, is_permanent: Boolean, 
                     company_name: String)

Я выполняю фильтрацию по этому классу дел Employee с использованием Quill SQL, например:

quote {
  query[Employee]
    .filter(e => e.age > 100)
    .filter(e => liftQuery(List("Robin, Peter")).contains(e.name))
}

Прекрасно компилируется.

Теперь я хочу поместить второй filter в функцию и использовать его повторно. Как и

  val employeeQueryFunc: (Employee => Boolean) = e => {
    liftQuery(List("Robin, Peter")).contains(e.name)
  }

, а затем применить эту функцию в нескольких местах, где мне нужно. Если я добавлю это к запросу сотрудника, как это

 quote {
  query[Employee]
    .filter(e => e.age > 100)
    .filter(employeeQueryFunc)
}

Он не компилируется. Я получаю сообщение об ошибке

  this.Employee]).filter(((e: FindAllIssuesRepoQuery.this.Employee) => e.age.> . 
  (100))).filter(employeeQueryFunc)' can't be parsed to 'Ast'

В идеале он должен был скомпилироваться, поскольку блок фильтра также содержит функцию, которая возвращает логическое значение, а employeeQueryFunc также возвращает логическое значение. Кто-нибудь знает, как его можно использовать как функцию ??

...