From f600f2be3f583609812363c02e47a5e055c9ba4d Mon Sep 17 00:00:00 2001 From: MrPowers Date: Fri, 7 May 2021 11:14:52 -0400 Subject: [PATCH] Add convention to intelligently select the param converter --- src/main/scala/swoop/modelo/Bob.scala | 10 +++++++++- src/test/scala/swoop/modelo/BobSpec.scala | 10 +++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/scala/swoop/modelo/Bob.scala b/src/main/scala/swoop/modelo/Bob.scala index 899968c..638be86 100644 --- a/src/main/scala/swoop/modelo/Bob.scala +++ b/src/main/scala/swoop/modelo/Bob.scala @@ -25,7 +25,15 @@ case class Bob( ParamValidators.requireAtLeastOne(inputParams, requireAtLeastOne) inputParams.map { case (key, value) => - (key, paramConverters(key)(value)) + if (key.endsWith("Exact")) { + (key, ParamConverters.exactMatch(value)) + } else if (key.endsWith("Exacts")) { + (key, ParamConverters.multiMatch(value)) + } else if (paramConverters.contains(key)) { + (key, paramConverters(key)(value)) + } else { + (key, ParamConverters.exactMatch(value)) + } } } diff --git a/src/test/scala/swoop/modelo/BobSpec.scala b/src/test/scala/swoop/modelo/BobSpec.scala index 35bd619..341b6a1 100644 --- a/src/test/scala/swoop/modelo/BobSpec.scala +++ b/src/test/scala/swoop/modelo/BobSpec.scala @@ -11,13 +11,13 @@ class BobSpec extends FunSpec with Matchers with SparkSessionTestWrapper with Da val someTool = Bob( templates = Map("countryFiltered" -> "select * from my_table where country IN {{{countries}}}"), baseTemplateName = "countryFiltered", - required = Set("whatever", "cool"), - paramConverters = Map("whatever" -> ParamConverters.multiMatch, "cool" -> ParamConverters.exactMatch) + required = Set("whateverExacts", "coolExact") ) val b = someTool - .whatever("aaa", "bbb") - .cool("ccc") - val expected = Map("whatever" -> "('aaa','bbb')", "cool" -> "'ccc'") + .whateverExacts("aaa", "bbb") + .coolExact("ccc") + .hiExact("hello") + val expected = Map("whateverExacts" -> "('aaa','bbb')", "coolExact" -> "'ccc'", "hiExact" -> "'hello'") b.attributes should be(expected) }