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)