Frames-0.6.2: test/LatinTest.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS_GHC -Wall #-}
module LatinTest where
import Frames
import Frames.CSV (readFileLatin1Ln)
import Pipes (Producer, (>->))
import qualified Pipes.Prelude as P
declareColumn "mId" ''Int
declareColumn "manager" '' Text
declareColumn "age" ''Int
declareColumn "pay" ''Int
type ManColumns = '["id" :-> Int, "manager" :-> Text, "age" :-> Int, "pay" :-> Text]
type ManRow = Record ManColumns
type ManMaybe = Rec (Maybe :. ElField) ManColumns
manStreamM :: MonadSafe m => Producer ManMaybe m ()
manStreamM = readFileLatin1Ln "test/data/latinManagers.csv" >-> pipeTableMaybe
managers :: IO [Text]
managers =
runSafeEffect . P.toListM $
manStreamM >-> P.map recMaybe >-> P.concat >-> P.map (rgetField @Manager)