aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/utils/ServiceUtils.scala
blob: 68070f46fc530183bfd2c26b2c5bb9b0614320a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package xyz.driver.pdsuicommon.utils

import xyz.driver.pdsuicommon.db.SearchFilterBinaryOperation.Eq
import xyz.driver.pdsuicommon.db.SearchFilterExpr
import xyz.driver.pdsuicommon.db.SearchFilterExpr.{Atom, Dimension}
import xyz.driver.pdsuicommon.logging._

import scala.util.{Failure, Success, Try}

object ServiceUtils extends PhiLogging {

  def findEqFilter(filter: SearchFilterExpr, fieldName: String): Option[SearchFilterExpr] = {
    findEqFilter(filter, Dimension(None, fieldName))
  }

  def findEqFilter(filter: SearchFilterExpr, dimension: Dimension): Option[SearchFilterExpr] = {
    filter.find {
      case Atom.Binary(`dimension`, Eq, _) => true
      case _                               => false
    }
  }

  def convertIdInFilterToLong(value: AnyRef): Option[Long] = {
    Try(value.toString.toLong) match {
      case Success(id) =>
        Option(id)
      case Failure(e) =>
        logger.error(phi"Incorrect id format in filter $e")
        None
    }
  }
}