0
4

2 に答える 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 に答える