我尝试在scala中消除重复的代码,但没有成功。
我所拥有的:
(table.filter(someFilters).map(columns).result map { res =>
res foreach { case (data1, data2, data3) =>
//some logic
}}) >>
(differentTable.filter(sameFilters).map(sameColumns).result map { res =>
res foreach { case (data1, data2, data3) =>
//other logic
}})
返回类型为DBIOAction
如何不重复此代码并根据表的类型执行逻辑?
*这两个表之间没有关系
答案 0 :(得分:1)
也许您可以在这里做一件事。
val table1 = TableQuery[Table1]
val table2 = TableQuery[Table2]
假设您具有表类型T
def findAll[T](table: T) = {
(table.filter(someFilters).map(columns).result map { res =>
res foreach { case (data1, data2, data3) =>
//some logic
}})
}
由于您的findAll
使用通用表名,并且您提到所有列都相同,因此请像下面这样调用findAll:
findAll[Table1](table1)
findAll[Table2](table2)
希望这会有所帮助