bugfix/fixed the filter params for metric endpoints

This commit is contained in:
hongwei 2023-02-10 14:31:58 +01:00
parent 9ac9784c47
commit 6064cf26dd

View File

@ -204,16 +204,7 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
}
}
}
private def extendCurrentQuery (params: List[String]) ={
// --> "?,?,"
val a = for(i <- 0 to (params.length-2) ) yield {s"${params(i)},"}
//"?,?,--> "?,?,?"
a.mkString("").concat(s"${params.last}")
}
private def extendLikeQuery(params: List[String], isLike: Boolean) = {
val isLikeQuery = if (isLike) "" else "NOT"
@ -225,9 +216,7 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
{
s" and url ${isLikeQuery} LIKE ('${params(i)}')"
}
// OR (url NOT LIKE ( '%management/metrics%' ) AND url NOT LIKE ( '%management/metrics%' ) ')))
// or (url NOT LIKE ($excludeUrlPatternsQueries)))
s"${params.head}')" + a.mkString("").concat(s" and url ${isLikeQuery} LIKE ('${params.last} ")
s"${params.head}')" + a.mkString("").concat(s" and url ${isLikeQuery} LIKE ('${params.last}")
}
}
@ -293,20 +282,16 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
val includeImplementedByPartialFunctions = queryParams.collect { case OBPIncludeImplementedByPartialFunctions(value) => value }.headOption
val excludeUrlPatternsList= excludeUrlPatterns.getOrElse(List(""))
val excludeAppNamesNumberList = excludeAppNames.getOrElse(List(""))
val excludeImplementedByPartialFunctionsNumberList = excludeImplementedByPartialFunctions.getOrElse(List(""))
val excludeAppNamesList = excludeAppNames.getOrElse(List(""))
val excludeImplementedByPartialFunctionsList = excludeImplementedByPartialFunctions.getOrElse(List(""))
val excludeUrlPatternsQueries = extendLikeQuery(excludeUrlPatternsList, false)
val extendedExcludeAppNameQueries = extendCurrentQuery(excludeAppNamesNumberList)
val extendedExcludeImplementedByPartialFunctionsQueries = extendCurrentQuery(excludeImplementedByPartialFunctionsNumberList)
val includeUrlPatternsList= includeUrlPatterns.getOrElse(List(""))
val includeAppNamesNumberList = includeAppNames.getOrElse(List(""))
val includeImplementedByPartialFunctionsNumberList = includeImplementedByPartialFunctions.getOrElse(List(""))
val includeAppNamesList = includeAppNames.getOrElse(List(""))
val includeImplementedByPartialFunctionsList = includeImplementedByPartialFunctions.getOrElse(List(""))
val includeUrlPatternsQueries = extendLikeQuery(includeUrlPatternsList, true)
val extendedIncludeAppNameQueries = extendCurrentQuery(includeAppNamesNumberList)
val extendedIncludeImplementedByPartialFunctionsQueries = extendCurrentQuery(includeImplementedByPartialFunctionsNumberList)
val result = scalikeDB readOnly { implicit session =>
val sqlQuery = if(isNewVersion) // in the version, we use includeXxx instead of excludeXxx, the performance should be better.
@ -324,8 +309,8 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(true)))} or userid = 'null')
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(false)))} or userid != 'null')
AND (${trueOrFalse(includeUrlPatterns.isEmpty) } or (url LIKE ($includeUrlPatternsQueries)))
AND (${trueOrFalse(includeAppNames.isEmpty) } or appname in ($extendedIncludeAppNameQueries))
AND (${trueOrFalse(includeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction in ($extendedIncludeImplementedByPartialFunctionsQueries))
AND (${trueOrFalse(includeAppNames.isEmpty) } or (appname in ($includeAppNamesList)))
AND (${trueOrFalse(includeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction in ($includeImplementedByPartialFunctionsList))
""".stripMargin
else
sql"""SELECT count(*), avg(duration), min(duration), max(duration)
@ -342,8 +327,8 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(true)))} or userid = 'null')
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(false)))} or userid != 'null')
AND (${trueOrFalse(excludeUrlPatterns.isEmpty) } or (url NOT LIKE ($excludeUrlPatternsQueries)))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($extendedExcludeAppNameQueries))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($extendedExcludeImplementedByPartialFunctionsQueries))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($excludeAppNamesList))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($excludeImplementedByPartialFunctionsList))
""".stripMargin
logger.debug("code.metrics.MappedMetrics.getAllAggregateMetricsBox.sqlQuery --: " +sqlQuery.statement)
val sqlResult = sqlQuery.map(
@ -403,8 +388,6 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
val excludeImplementedByPartialFunctionsNumberList = excludeImplementedByPartialFunctions.getOrElse(List(""))
val excludeUrlPatternsQueries = extendLikeQuery(excludeUrlPatternsList, false)
val extendedExclueAppNameQueries = extendCurrentQuery(excludeAppNamesNumberList)
val extendedExcludeImplementedByPartialFunctionsQueries = extendCurrentQuery(excludeImplementedByPartialFunctionsNumberList)
val (dbUrl, _, _) = getDbConnectionParameters
@ -429,8 +412,8 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(true)))} or userid = 'null')
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(false)))} or userid != 'null')
AND (${trueOrFalse(excludeUrlPatterns.isEmpty) } or (url NOT LIKE ($excludeUrlPatternsQueries)))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($extendedExclueAppNameQueries))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($extendedExcludeImplementedByPartialFunctionsQueries))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($excludeAppNamesNumberList))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($excludeImplementedByPartialFunctionsNumberList))
GROUP BY metric.implementedbypartialfunction, metric.implementedinversion
ORDER BY count(*) DESC
${otherDbLimit}
@ -477,12 +460,10 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
val limit = queryParams.collect { case OBPLimit(value) => value }.headOption
val excludeUrlPatternsList = excludeUrlPatterns.getOrElse(List(""))
val excludeAppNamesNumberList = excludeAppNames.getOrElse(List(""))
val excludeImplementedByPartialFunctionsNumberList = excludeImplementedByPartialFunctions.getOrElse(List(""))
val excludeAppNamesList = excludeAppNames.getOrElse(List(""))
val excludeImplementedByPartialFunctionsList = excludeImplementedByPartialFunctions.getOrElse(List(""))
val excludeUrlPatternsQueries = extendLikeQuery(excludeUrlPatternsList, false)
val extendedExclueAppNameQueries = extendCurrentQuery(excludeAppNamesNumberList)
val extendedExcludeImplementedByPartialFunctionsQueries = extendCurrentQuery(excludeImplementedByPartialFunctionsNumberList)
val (dbUrl, _, _) = getDbConnectionParameters
@ -509,8 +490,8 @@ object MappedMetrics extends APIMetrics with MdcLoggable{
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(true)))} or userid = 'null')
AND (${falseOrTrue(anon.isDefined && anon.equals(Some(false)))} or userid != 'null')
AND (${trueOrFalse(excludeUrlPatterns.isEmpty) } or (url NOT LIKE ($excludeUrlPatternsQueries)))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($extendedExclueAppNameQueries))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($extendedExcludeImplementedByPartialFunctionsQueries))
AND (${trueOrFalse(excludeAppNames.isEmpty) } or appname not in ($excludeAppNamesList))
AND (${trueOrFalse(excludeImplementedByPartialFunctions.isEmpty) } or implementedbypartialfunction not in ($excludeImplementedByPartialFunctionsList))
GROUP BY appname, consumer.developeremail, consumer.id, consumer.consumerid
ORDER BY count DESC
${otherDbLimit}