2015-04-24 2 views
3

В пятне у меня есть установка, которая выглядит вроде этого:Как применить фильтр по умолчанию на объекте Slick TableQuery?

class Users(tag: Tag) extends Table(tag) { 
    def name = column[String] 
    def disabled = column[Boolean] 
    def * = ... 
} 

object Users extends TableQuery(new Users(_)) {} 

Я хочу это в любое время кто-то использует Users объект для запросов к базе данных, это исключает инвалид пользователей. Например:

Users.where(_.name === "Fred")

выполняет:

select * from users where name = 'Fred' and disabled = false

Возможно ли это? Кажется, я ничего не могу найти в объекте TableQuery, чтобы переопределить его, чтобы я мог это сделать.

Оцените любой свет, который можно пролить на это.

ответ

3

Одна вещь, вы должны быть в состоянии сделать, это определить ваши запросы как простые Scala выражения/функции:

val disabledUsers = Users.filterNot(_.disabled) 

выше только определяет запрос, который будет отсеивать людей с ограниченными возможностями. Вы можете комбинировать его несколько раз в разных точках программы, с более конкретными запросами:

disabledUsers.where(_.name === "Fred") 

Я считаю, что Slick то должно быть достаточно умны, чтобы скомпилировать и оптимизировать запрос в единый SELECT

Смежные вопросы