Revisé el libro de Yesod y la fuente y aprendí prácticamente cómo funciona todo. Pero antes de escribir mis propias cosas, hay una cosa en el sitio de scaffolded que simplemente no entiendo.No entiendo lo que este tipo de cosas familiares en yesod es para
Así que Andamios un sitio "copywww" y en las CopyWWWState.hs del archivo está el código:
instance YesodPersist CopyWWWState where
type YesodDB CopyWWWState = SqlPersist
runDB db = liftIOHandler
$ fmap connPool getYesod >>= Settings.runConnectionPool db
instance YesodAuth CopyWWWState where
type AuthId CopyWWWState = UserId
-- Where to send a user after successful login
loginDest _ = RootR
-- Where to send a user after logout
logoutDest _ = RootR
getAuthId creds = runDB $ do
x <- getBy $ UniqueUser $ credsIdent creds
case x of
Just (uid, _) -> return $ Just uid
Nothing -> do
fmap Just $ insert $ User (credsIdent creds) Nothing
authPlugins = [ authOpenId
, authEmail
]
Las líneas que no entiendo son los que:
type AuthId CopyWWWState = UserId
type YesodDB CopyWWWState = SqlPersist
Cuando los elimino, obviamente recibo errores, pero no estoy seguro de por qué son necesarios en primer lugar. Cuando busco en la fuente "UserId" o "SqlPersist", no encuentro nada que parezca prometedor. ¿Para qué necesita este código exactamente? ¿Qué beneficio obtiene yesod del uso de familias de tipos en estas clases?