2017-05-30 5 views
2

J'utilise le modèle yesod-sqlite et essaie d'utiliser la fonction get de Database.Persist dans un test.Comment "importer Database.Persist comme X se cachant (get)" du modèle yesod-sqlite fonctionne

Voici mon code:

[Entity _ task] <- runDB $ selectList [TaskName ==. name] [] 
... 
user <- runDB $ X.get (taskUserId task) 

Et l'erreur que je reçois:

my_project/test/Handler/TaskSpec.hs:47:29: error: 
Not in scope: ‘X.get’ 
No module named ‘X’ is imported. 

Dans le fichier TestImport.hs, j'ai vu cette ligne:

import Database.Persist  as X hiding (get) 

Pour ma compréhension il devrait cacher la fonction get du module HSpec, donc je pourrais utiliser X.get pour la récupération de base de données. J'ai également essayé avec Database.Persist.get et juste get avec le même résultat.

Donc, mon doute est: que fait cette ligne dans TestImport.hs?

Répondre

4

La ligne d'importation importe tout dans le module Database.Persistsaufget, éventuellement qualifié.

Si je comprends correctement et que vous voulez importer seulementget qualifié, et tout le reste non qualifié, vous pouvez utiliser:

import Database.Persist hiding (get) 
import qualified Database.Persist as X (get) 
+0

Je ne savais même pas que vous pouvez * * mélanger les importations qualifiées avec listes d'importation – luqui