2 に答える
0
于 2020-02-19T16:18:50.530 に答える
0
ghciに尋ねる:info User
と、適切なヒントが得られました。クラスのインスタンスが表示されます。Entity User
直接使用するのは間違っていることがわかりました。これによりエンティティが作成されますが、によって生成されたすべてのクラスインスタンスがエンティティDatabase.Persist.TH.share
から欠落していると思われます。Bjartur が述べたように、冗長な制約も削除して、次のコードをコンパイルします。
sampleUser :: User
sampleUser = User
{ userName = "admin"
, userEmail = "admin@test.com"
}
type U = User
connectInfo :: MySQLConnectInfo
connectInfo = undefined
runAction :: (MonadUnliftIO m, IsPersistBackend r, BaseBackend r ~ SqlBackend) => MySQLConnectInfo -> ReaderT r (LoggingT m) a -> m a
runAction connectInfo action = runStdoutLoggingT $ withMySQLConn connectInfo $ \backend ->
runReaderT action backend
insertUser :: (PersistRecordBackend U SqlBackend) =>
U -> ReaderT SqlBackend (LoggingT IO) (Key U)
insertUser = insert
doDBStuff :: IO ()
doDBStuff = do
runAction connectInfo (runMigration migrateAll)
runAction connectInfo (insertUser sampleUser) -- compile error fixed
return ()
于 2020-02-20T09:36:09.127 に答える