Один и тот же запрос для разных таблиц - Scala Slick - PullRequest
0 голосов
/ 05 декабря 2018

Я пытался удалить дублирующийся код в 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

Как это возможно?не дублировать этот код и выполнять логику в зависимости от типа таблицы?

* Две таблицы не имеют никакого отношения между ними

1 Ответ

0 голосов
/ 05 декабря 2018

Может быть, вы можете сделать одну вещь здесь.

 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) 

Надеюсь, это поможет

...