Haskell 单独处理包含两个或多个约束的实体的唯一约束冲突

Haskell 单独处理包含两个或多个约束的实体的唯一约束冲突,haskell,error-handling,uniqueidentifier,yesod,persistent,Haskell,Error Handling,Uniqueidentifier,Yesod,Persistent,我有一个具有两个唯一约束的用户实体: share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| User ident Text email Text ... UniqueUser ident UniqueUserEmail email |] 这个实体有两个可能的字段,它可以抛出一个唯一的约束冲突,我希望能够单独处理每个字段。不幸的是,该函数只能告诉我违反了某些约束,而

我有一个具有两个唯一约束的用户实体:

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User
    ident Text
    email Text
    ...
    UniqueUser ident
    UniqueUserEmail email
|]
这个实体有两个可能的字段,它可以抛出一个唯一的约束冲突,我希望能够单独处理每个字段。不幸的是,该函数只能告诉我违反了某些约束,而不能告诉我哪个

尽管
replaceUnique
返回
Unique
冲突,但基于
insert
的函数似乎没有等效的功能

因此,
checkUnique
似乎是我最好的选择,我尝试推出一些使用类中一些较低级别函数的东西(特别是
persisteniquetofieldnames
persisteniquekeys
函数),但我能想到的最好办法是使用相当拙劣的字符串相等来处理适当的冲突,而不是数据类型匹配

在深入研究严格类型的实现之前,我想在这里问问是否有更好的方法来解决这类问题。谢谢大家抽出时间