существует запрос в пятно

0

у меня есть запрос, как ниже

  override def isOnList(id: Long, value: String)(implicit ex: ExecutionContext): DBIO[Boolean] = {
    tableQuery.filter(e => e.id === id && e.isActive && e.value === value).exists.result
  }

Но он возвращает false, когда таблица не содержит строк с id === id. Я бы хотел изменить это. Мое изменение

  override def isOnList(id: Long, value: String)(implicit ex: ExecutionContext): DBIO[Boolean] = {
    tableQuery.filter(e => e.id === id && e.isActive).result.flatMap {
      case seq if seq.isEmpty => DBIOAction.successful(true)
      case seq => DBIOAction.successful(seq.exists(_.value==value))
    }
  }

Я новичок в slick, поэтому мне хотелось бы знать, что это хорошее решение или нет (я не могу найти информацию.)? О, я забыл, Ид не уникален.

Теги:
exists
slick

1 ответ

1

Что не так с вашим первым вариантом? Кажется, это совершенно верно!

def isOnList(id: Long, value: String)(implicit ex: ExecutionContext) : Future[Boolean] = 
    db.run(User.filter(e => e.id === id && e.isActive && e.value === value).exists.result)

Этот метод должен автоматически возвращать true или false в зависимости от состояния фильтра!

  • 0
    «Но он возвращает false, когда в таблице нет строк с id === id. Я хотел бы изменить это». Моя модификация возвращает истину. Не ложно, как первый вариант. поэтому, когда таблица пуста, мое первое решение возвращает false, а второе - true. Здесь есть разница.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню