{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}

module Leankit.Types.BoardIdentifierSet where

import Data.Aeson.TH

import Leankit.Types.TH
import Leankit.Types.Common
import Leankit.Types.LaneShort


data BoardIdentifier a = BoardIdentifier {
	_id   :: a,
	_name :: String
} deriving (Eq, Show)

data BoardIdentifierSet = BoardIdentifierSet {
	_boardId          :: BoardID,

	_lanes            :: [LaneShort],
	_laneType         :: [BoardIdentifier LaneTypeID],
	_laneClassType    :: [BoardIdentifier LaneClassTypeID],

	_cardTypes        :: [BoardIdentifier CardTypeID],
	_boardUsers       :: [BoardIdentifier UserID],
	_priorities       :: [BoardIdentifier PriorityID],
	_classesOfService :: [BoardIdentifier ClassOfServiceID]
--	_boardStatistics  :: Something -- TODO
} deriving (Eq, Show)

$(deriveFromJSON parseOptions ''BoardIdentifier)
$(deriveFromJSON parseOptions ''BoardIdentifierSet)