private def buildWhereClauseParts()

in newswires/app/db/FingerpostWireEntry.scala [302:337]


  private def buildWhereClauseParts(
      searchParamList: List[SearchParams],
      maybeBeforeId: Option[Int],
      maybeSinceId: Option[Int]
  ) = {
    val dataOnlyWhereClauses = List(
      maybeBeforeId.map(beforeId =>
        sqls"${FingerpostWireEntry.syn.id} < $beforeId"
      ),
      maybeSinceId.map(sinceId =>
        sqls"${FingerpostWireEntry.syn.id} > $sinceId"
      )
    ).flatten

    val commonWhereClauses = searchParamList.flatMap(searchParams => {
      val whereClause = processSearchParams(searchParams)

      if (whereClause.nonEmpty) {
        Some(
          sqls.joinWithAnd(
            dataOnlyWhereClauses ++ whereClause: _*
          )
        )
      } else {
        None
      }
    })

    commonWhereClauses match {
      case Nil => None
      case wherePart :: Nil =>
        Some(wherePart)
      case whereParts =>
        Some(sqls.joinWithOr(whereParts.map(clause => sqls"($clause)"): _*))
    }
  }