1 {-# LANGUAGE OverloadedStrings, TypeFamilies #-} 2 module Model.Funding.Types 3 ( Funder(..) 4 , Funding(..) 5 , makeFunding 6 ) where 7 8 import Data.Int (Int64) 9 import Data.Maybe (fromMaybe) 10 import qualified Data.Text as T 11 12 import Model.Kind 13 import Model.Id.Types 14 15 type instance IdType Funder = Int64 16 17 data Funder = Funder 18 { funderId :: Id Funder 19 , funderName :: T.Text 20 } 21 22 instance Kinded Funder where 23 kindOf _ = "funder" 24 25 data Funding = Funding 26 { fundingFunder :: Funder 27 , fundingAwards :: [T.Text] 28 } 29 30 makeFunding :: [Maybe T.Text] -> Funder -> Funding 31 makeFunding a f = Funding f (map (fromMaybe (error "NULL funding.award")) a)