{- |
   Module     : Database.HDBI.Formaters
   Copyright  : Copyright (C) 2006 John Goerzen
   License    : BSD3

   Maintainer : Aleksey Uymanov <s9gf4ult@gmail.com>
   Stability  : experimental
   Portability: portable
-}


module Database.HDBI.Formaters
       (
         formatBitField
       , formatIsoUTCTime
       , formatIsoDay
       , formatIsoTimeOfDay
       , formatIsoLocalTime
       ) where 

import Data.Word
import Data.Bits
import Data.Time
import System.Locale (defaultTimeLocale)


formatBitField :: Word64 -> String
formatBitField w = "b'" ++ (map (tochar . testBit w) [bs,bs-1..0]) ++ "'"
  where
    bs = (bitSize w) - 1
    tochar True = '1'
    tochar False = '0'


formatIsoUTCTime :: UTCTime -> String
formatIsoUTCTime = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S%Q%z"

formatIsoDay :: Day -> String
formatIsoDay = formatTime defaultTimeLocale "%Y-%m-%d"

formatIsoTimeOfDay :: TimeOfDay -> String
formatIsoTimeOfDay = formatTime defaultTimeLocale "%H:%M:%S%Q"

formatIsoLocalTime :: LocalTime -> String
formatIsoLocalTime = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S%Q"