{-# LANGUAGE OverloadedStrings #-}

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


import Prelude hiding (writeFile)
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 (\(x, y) -> (formatISODateTime x, y)) (toList ts)
    let rs' = encode rs
    writeFile filePath rs'