自定义`toSqlKey`用于自定义主键

时间:2017-10-24 02:13:47

标签: yesod persistent

我正在定义以下模型,其中Category具有code类型的非整数主键Text

Category
    code Text
    Primary code
    deriving Show Typeable

CategoryTreeNode
    name Text
    code CategoryId Maybe
    lft Int MigrationOnly default=0
    rgt Int MigrationOnly default=0
    deriving Show Typeable

对于没有Primary定义的模型,我可以使用toSqlKey将任意Int64转换为Key Category。对于具有自定义主键的模型,是否存在等效函数?

1 个答案:

答案 0 :(得分:3)

我通过查看持久性的TH模块找到了答案:

https://github.com/yesodweb/persistent/blob/9396c278fc181fdac4a97c53637700417f41a478/persistent-template/Database/Persist/TH.hs#L857-L858

这一行表明通过TH生成CategoryKey,情况确实如此:

let x :: Key Category
    x = CategoryKey "foobar"