Необязательная нумерация страниц - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь реализовать простой запрос БД с необязательной нумерацией страниц. Моя попытка:

def getEntities(limit: Option[Int], offset: Option[Int]) = {

  // MyTable is a slick definition of the db table 

  val withLimit = limit.fold(MyTable)(l => MyTable.take(l))    // Error here. 
                                                               // Mytable and MyTable.take(l) 
                                                               // has various types
  val withOffset = offset.fold(withLimit)(o => withLimit.drop(o))
  val query = withOffset.result

  db.run(query)
}

Проблема заключается в ошибке:

несоответствие типов:
найдено: slick.lifted.Query
обязательно: slick.lifted.TableQuery

Как сделать этот код работоспособным? А может быть, немного красивее?


Мое текущее исправление для получения Query из TableQuery - добавить .filter(_ => true), но ИМХО это нехорошо:

val withLimit = limit.fold(MyTable.filter(_ => true))(l => MyTable.take(l))

1 Ответ

2 голосов
/ 05 октября 2019

Попробуйте заменить

val MyTable = TableQuery[SomeTable]

на

val MyTable: Query[SomeTable, SomeTable#TableElementType, Seq] = TableQuery[SomeTable]

, т. Е. Указать тип (статически upcast TableQuery до Query).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...