Я пытаюсь создать таблицу многих из многих, используя Groundhog в Haskell, которая в основном выглядит так, если я отрежу всю оставшуюся логику:Каков идеальный способ выбора строк проецируемыми клавишами в Groundhog Haskell
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, а затем получить все соответствующие курганы по многим таблицам. Сейчас я играл с чем-то вроде этого:
getBarsForFoo fooID = do
barKeys <- project
(FooToBarRowBarField)
(FooToBarRowFooField ==. (Foo_FooKey fooID))
select $ (BarRowUUIDField `in_` barKeys)
Однако это не typecheck с ошибкой:
Couldn't match type 'UUID' with 'BarRow'
инспектирующих только результаты проекта с putStrLn, я могу видеть, что тип barKeys
является:
[Bar_BarKey UUID]
, но я не совсем понимаю, как использовать, что в моем запросе. Я не вижу таких примеров в документации Groundhog, поэтому я надеюсь, что кто-то сможет поставить меня на правильный путь здесь.