Haskell PostgreSQL Simple FromField
У меня проблемы с определением экземпляра FromField для моего пользовательского типа данных enum:
data Role = Staff | Student deriving (Eq, Ord, Show)
Представлять Role
в моей базе данных я буду использовать целые 0 и 1 (больше ролей можно добавить позже), скорее всего smallint
,
Review
используется в моем другом типе данных, который представляет строку в моей таблице БД:
data ReviewAssignment = ReviewAssignment
{ aID :: ID
, reviewID :: ID
, reviewerID :: ID
, revieweeID :: ID
, reviewerRole :: Role -- <-- right there
, reviewFinished :: Bool
, reviewPoints :: Float
} deriving (Show, Eq)
Это мой экземпляр FromRow для ReviewAssignment:
instance FromRow ReviewAssignment where
fromRow = ReviewAssignment <$> field <*> field <*> field <*> field <*> field <*> field <*> field
Сейчас мне просто не хватает следующего, что я не понимаю, как реализовать:
instance FromField Role where
fromField = undefined
2 ответа
Возможно, поздно, но что-то вроде этого должно работать (надеюсь):
instance FromField Role where
fromField f mdata =
return role
where role = case mdata of
Just 0 -> Staff
_ -> Student
fromField
должен взять целое число (smallint из вашей базы данных) и вернуть значение Role. Я полагаю, вы реализуете это с помощью сопоставления с образцом. Вы можете прочитать больше о fromField в документации. Вы также можете черпать вдохновение из предопределенных реализаций fromField.