{- This modules describes output data for the command line utlity. -} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} module Main.Output ( Output , encode ) where import GHC.Generics (Generic) import Data.Aeson (ToJSON) import Malodivo.Types.Bill (Bill) import Malodivo.Types.District (DistrictFunds, DistrictInfo, df2di) type Output = [BillBudget] -- | JSON-friendly type. It describes contribution of each district into a bill. data BillBudget = BillBudget { bill :: Bill , districts :: [DistrictInfo] } deriving (Generic, ToJSON) -- | Translate into JSON-friendly format. encode :: [(Bill, DistrictFunds)] -> Output encode = map (\(b, df) -> BillBudget {bill = b, districts = df2di df})