{-# LANGUAGE OverloadedStrings #-}
{-|
Module:      Data.TimeSeries.IO.CSVWriter
Copyright:   (c) 2016 Krzysztof Langner
License:     BSD3
Stability:   experimental
Portability: portable
Write Time Series to the csv file.
-}

module Data.TimeSeries.IO.CSVWriter( saveCSV ) where


import Prelude hiding (writeFile)
import Control.Arrow (first)
import Data.Csv
import Data.ByteString.Lazy (writeFile)
import Data.Text.Time ( formatISODateTime )

import Data.TimeSeries.Series ( Series
                              , toList )


-- | Load data from CSV file and create Time Series from it
-- As a first argument provide function to convert date from ByteString to UTCTime
saveCSV :: Series Double -> FilePath -> IO ()
saveCSV ts filePath = do
    let rs = map (first formatISODateTime) (toList ts)
    let rs' = encode rs
    writeFile filePath rs'