Пример постоянной работы с конкретным оператором

Я хотел бы сделать запрос LIKE в persistent, я использую sqlite. Книга Yesod дает пример использования raw SQL для этого, но говорит:

вы можете выразить оператор LIKE непосредственно в нормальном синтаксисе из-за добавлена ​​функция Persistent 0.6, которая позволяет использовать Операторы

Я не мог найти пример этого. Будет ли у кого-нибудь пример того, что означало бы использовать конкретный оператор, такой как LIKE с selectList или что-то эквивалентное?

Спасибо!

Ответ 1

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

selectList [Filter PersonName (Left $ PersistText "%Michael%") (BackendSpecificFilter "ILIKE")] []

Очевидно, вы можете создать некоторую вспомогательную функцию, например:

icontains field val = Filter field (Left $ PersistText $ T.concat ["%", val, "%"]) (BackendSpecificFilter "ILIKE")
selectList [Personname `icontains` "Michael"] []