{- # LANGUAGE GeneralizedNewtypeDeriving #-}

module Project where

import Data.Text (Text)

newtype Money = Money
    { unMoney :: Double
    } deriving (Show, Eq, Num)
    
newtype ProjectId = ProjectId
    { unProjectId :: Int  
    } deriving (Show, Eq, Num)

data Project
    = Project ProjectId Text
    | ProjectGroup Text [Project]
    deriving (Show, Eq)

data Budget = Budget
    { budgetIncome :: Money
    , budgetExpenditure :: Money
    } deriving (Show, Eq)

data Transaction 
    = Sale Money
    | Purchase Money
    deriving (Show, Eq)