我对外部连接如何与 esqueleto 一起使用有点困惑。
我创建了以下查询(简化):
select $ from $ \(rep `LeftOuterJoin` event) -> do
on (rep ^. RepAtomId ==. event ^. EventAtomId )
where_ (rep ^. RepAtomId ==. val aid)
return $ (rep, event ^. EventSeconds)
据我所知,在 SQL 端,此查询将搜索可能具有关联事件的代表。如果它们没有关联的事件,则事件字段(如 EventSeconds)将为“null”。在 Haskell 方面,这些应该被翻译成 Maybe Seconds (嗯,整数,但你明白了)。
那么当我运行这个查询并且没有任何东西可以连接到我的代表关系时,实际上会发生什么?如何解构元组以粘贴默认值?
目前,我有一些类似的东西:
case listToMaybe lrep of
Just ( entityVal -> rep
, unValue -> seconds
) -> do stuff
(请注意,我在此处打开了 ViewPatterns)。这种类型的检查。但如果我使用 (?.) 和 (fromMaybe 3600) 会失败。模式分析中的 unValue。