gpt4 book ai didi

sql - 在 Groundhog Haskell 中通过投影键选择行的理想方法是什么

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:52 25 4
gpt4 key购买 nike

我正在尝试使用 Haskell 中的 Groundhog 创建多对多表,如果我去掉所有其他逻辑,它基本上看起来像这样:

data FooRow = FooRow {
fooRowUUID :: UUID
}
deriving instance Show FooRow

data BarRow = BarRow {
barRowUUID :: UUID
}
deriving instance Show BarRow

data FooToBarRow = FooToBarRow {
fooToBarRowUUID :: UUID,
fooToBarRowFoo :: DefaultKey FooRow,
fooToBarRowBar :: DefaultKey BarRow
}
deriving instance Show FooToBarRow

现在,尝试定义操作,我可以很好地获取和插入所有这些记录,但是我不确定如何从拥有 FooRow 及其 ID,然后通过以下方式获取所有相关的 BarRows多对多表。现在我玩过这样的东西:

getBarsForFoo fooID = do
barKeys <- project
(FooToBarRowBarField)
(FooToBarRowFooField ==. (Foo_FooKey fooID))
select $ (BarRowUUIDField `in_` barKeys)

然而,这并没有进行类型检查,并出现错误:

Couldn't match type 'UUID' with 'BarRow'

仅使用 putStrLn 检查项目的结果,我可以看到 barKeys 的类型是:

[Bar_BarKey UUID]

但我不太明白如何在我的查询中使用它。我在 Groundhog 文档中没有看到任何这样的例子,所以我希望有人能够在这里让我走上正确的道路。

最佳答案

我很确定有更有效的方法来解决这个问题(这种方法会产生大量的底层查询),但这至少暂时完成了工作。

getBarsForFoo fooID = do
barKeys <- project
(FooToBarRowBarField)
(FooToBarRowFooField ==. (Foo_FooKey fooID))
q <- mapM (getBy) barKeys
return (catMaybes q :: [BarRow])

关于sql - 在 Groundhog Haskell 中通过投影键选择行的理想方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com