1

カスタム enum データ型の FromField インスタンスの定義に問題があります。

data Role = Staff | Student deriving (Eq, Ord, Show)

私のデータベースで表すRoleには、int 0 と 1 を使用します (ロールは後で追加できます) smallint

Review私のdbテーブルの行を表す他のデータ型で使用されています:

data ReviewAssignment = ReviewAssignment
  { aID :: ID
  , reviewID :: ID
  , reviewerID :: ID
  , revieweeID :: ID
  , reviewerRole :: Role -- <-- right there
  , reviewFinished :: Bool
  , reviewPoints :: Float
  } deriving (Show, Eq)

これは、ReviewAssignment の FromRow インスタンスです。

instance FromRow ReviewAssignment where
  fromRow = ReviewAssignment <$> field <*> field <*> field <*> field <*> field <*> field <*> field

今、私は実装方法を理解していない次のものを見逃しています:

instance FromField Role where
  fromField = undefined
4

2 に答える 2

1

fromField整数 (データベースからの smallint) を取り、Role 値を返す必要があります。パターンマッチングを使用して実装することをお勧めします。fromField の詳細については、ドキュメントを参照してください。定義済みの fromField 実装からインスピレーションを得ることもできます。

于 2016-01-21T09:42:48.593 に答える