Запрос Esqueleto, который возвращает постоянное значение

Можно ли использовать esqueleto для создания запроса, который возвращает постоянное значение? подобно SELECT 1 например.

1 ответ

Решение

Попробуй это:

import Database.Esqueleto

-- | We have to specialize `val` or else the type inferencer
-- will complain about the `Esqueleto` instance.
val_ :: Int -> SqlExpr (Value Int)
val_ = val

query :: SqlPersistT IO [Value Int]
query = select $ return (val_ 1)

Комментарий @ Чи был близок, но 1 нужно было поднять в SqlExpr, val написано в общем и зависит от Esqueleto экземпляр класса. Обычно средство вывода типов захватывает это, как только вы используете from и вытащил таблицу SQL, но так как ничего этого здесь нет, мы должны специализироваться вручную.

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

Другие вопросы по тегам