Представьте, что у вас есть две модели ( Foo и Bar ), и они обе имеют ссылки друг на друга ( Foo имеют barRef с типом BarId и Bar имеют fooRef с типом FooId ). Все идет хорошо:
#!/usr/bin/env stack
{- stack script --resolver=lts-9.21 --package=persistent-template -}
{-# LANGUAGE GADTs, GeneralizedNewtypeDeriving, QuasiQuotes, TemplateHaskell #-}
{-# LANGUAGE TypeFamilies, MultiParamTypeClasses #-}
import Database.Persist.TH
mkPersist sqlSettings [persistLowerCase|
Foo
barModel BarId
fooField Int
Bar
fooModel FooId
barField Int
|]
main = pure ()
Но если я оберну справочный тип в Может быть (просто пример, он может Vector или что-нибудь еще):
#!/usr/bin/env stack
{- stack script --resolver=lts-9.21 --package=persistent-template -}
{-# LANGUAGE GADTs, GeneralizedNewtypeDeriving, QuasiQuotes, TemplateHaskell #-}
{-# LANGUAGE TypeFamilies, MultiParamTypeClasses #-}
import Database.Persist.TH
mkPersist sqlSettings [persistLowerCase|
Foo
barModel (Maybe BarId)
fooField Int
Bar
fooModel FooId
barField Int
|]
main = pure ()
Ошибка с этой ошибкой:
Not in scope: type constructor or class ‘BarId’
Как мне решить эту проблему?