rds-data-codecs-0.0.0.1: src/Data/RdsData/Internal/Convert.hs
{-# LANGUAGE OverloadedStrings #-}
module Data.RdsData.Internal.Convert
( dayToText
, jsonToText
, timeOfDayToText
, uuidToText
, utcTimeToText
, textToDouble
) where
import Data.UUID (UUID)
import Data.Text (Text)
import Data.Time
import Prelude hiding (maybe, null)
import qualified Data.Aeson as J
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.UUID as UUID
timeOfDayToText :: TimeOfDay -> Text
timeOfDayToText =
T.pack . formatTime defaultTimeLocale "%H:%M:%S%Q"
dayToText :: Day -> Text
dayToText =
T.pack . formatTime defaultTimeLocale "%Y-%m-%d"
jsonToText :: J.Value -> Text
jsonToText =
T.decodeUtf8 . LBS.toStrict . J.encode
utcTimeToText :: UTCTime -> Text
utcTimeToText =
T.pack . formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S"
uuidToText :: UUID -> Text
uuidToText =
T.pack . UUID.toString
textToDouble :: Text -> Maybe Double
textToDouble text =
case reads (T.unpack text) of
[(x, "")] -> Just x
_ -> Nothing