いくつかのテーブルを結合し、 1 つのフィールドがequalsでない限り結果をさらに制限するクエリを作成します。IncludeAll
True
こんな感じで書いてみました
fetch i = runDb . select . from $ \(a, b, c) -> do
where_ $
a ^. AId ==. valkey i
&&. b ^. BField1 ==. a ^. AField2
&&. c ^. CField1 ==. a ^. AField3
unless (unValue $ b ^. BIncludeAll) $
where_ $ b ^. BField2 == c ^. CField2
return b
しかし、次のエラーが表示されます
の最初の引数で、予想される型
Bool
と実際の型を一致させることができませんでしたDatabase.Esqueleto.Internal.Language.Value Bool
unless
だから、unValue
どういうわけかトリックをしません。実際、 のようなものb ^. BIncludeAll
は typeを持っていexpr (Value a)
ます。
ソースの の定義をSqlExpr
見ても、私には役に立ちませんでした。
それはADTです:
data SqlExpr a where ...
PS: SQL バックエンドを使用していますが、理想的には問題にならないはずですよね?