Объединить более одного инфикса в Quill SQL - PullRequest
1 голос
/ 07 марта 2020

Мне нужно написать простые SQL запросы внутри инфиксов. У меня есть основной запрос SQL, а затем добавляются в него предложения AND, основанные на определенных условиях.

Например:

  val andClause= quote { (name: String) =>
    infix"""AND name = $name """.as[Query[(Int, String)]]
   }

   val rawQuery = quote { (id: String, name: String) =>
    infix"""SELECT id, name FROM my_entity WHERE id = $id ${andClause(name)}"""
        .as[Query[(Int, String)]]
  }

 ctx.translate(rawQuery("ramakrishna", "rk”))

, и это печатает

  SELECT x._1, x._2 FROM (SELECT id, name FROM my_entity WHERE id = 'ramakrishna' AND name = 'rk' ) AS x

как и ожидалось.

Тем не менее, мне нужно констатировать инфиксы условно, как

    val andClause1= quote { (name: String) =>
     infix"""AND name = $name """.as[Query[(Int, String)]]
    }

    val andClause2= quote { (name: String) =>
     infix"""   """.as[Query[(Int, String)]]
    }


   def andClauseCondition(i: String) =
      if (!i.isEmpty) {
         andClause1(i)
   } else {
       andClause2(i)
   }

И я называю свой запрос как

val rawQuery = quote { (id: String, name: String) =>
     infix"""SELECT id, name FROM my_entity WHERE id = $id ${andClauseCondition(name)}"""
         .as[Query[(Int, String)]]
   }

Но я получаю ошибку как

 Error:(231, 26) Tree 'andClauseCondition(name)' can't be parsed to 'Ast'
    val rawQuery = quote { (id: String, name: String) =>

Можно ли добавить один или несколько инфиксов в базовый запрос? Если да, это правильный способ добавления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...