使用包含两个或更多约束的实体单独处理唯一约束违规

时间:2016-03-18 08:35:52

标签: haskell error-handling uniqueidentifier yesod persistent

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

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User
    ident Text
    email Text
    ...
    UniqueUser ident
    UniqueUserEmail email
|]

此实体有两个可能的字段,可以抛出唯一约束违规,我希望能够单独处理每个字段。不幸的是,insertUnique函数只能告诉我违反了 某些 约束,但

虽然replaceUnique会返回Unique违规行为,但似乎并不是基于insert的功能的等效功能。

所以,似乎checkUnique是我最好的选择,而且我尝试推出使用PersistEntity类中某些低级函数的东西(特别是{ {1}}和persistUniqueToFieldNames函数),但我能想到的最好的事情是使用相当粗制的字符串相等来处理相应的违规,而不是数据类型匹配。

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

0 个答案:

没有答案