4

予約語が無効になるように、フィールドに制約を定義したいと思います。Yesod でこれを達成するにはどうすればよいですか?

{-# LANGUAGE TemplateHaskell #-}
module Sid where

import Control.Exception
import Data.List
import Database.Persist.TH
import Data.Aeson.TH
import Text.Show
import Text.Read
import Data.Text

data Sid = Sid Text
         deriving (Show, Read)

reserved :: [Text]
reserved = ["abc","def"]

allowedSid :: Text -> Sid
allowedSid a = (assert (notElem a reserved)) Sid a

derivePersistField "allowedSid"
deriveJSON defaultOptions ''allowedSid
4

1 に答える 1