{-# OPTIONS_HADDOCK hide #-}
-- https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/3d29e8dc-218a-42c6-9ba4-947ebca9fd7e

module Database.Tds.Primitives.Collation ( Collation32 (..)
                                         , SortId (..)
                                         , Collation (..)
                                         , getCollation
                                         , putCollation
                                         ) where

import Data.Word (Word8(..),Word32(..))

import Data.Binary (Put(..),Get(..))
import qualified Data.Binary.Put as Put
import qualified Data.Binary.Get as Get


type Collation32 = Word32
type SortId = Word8

data Collation = Collation !Collation32 !SortId
               deriving (Show)


getCollation :: Get Collation
getCollation = do
  coll <- Get.getWord32be
  sort <- Get.getWord8
  return $ Collation coll sort

putCollation :: Collation -> Put
putCollation (Collation coll sort) = do
  Put.putWord32be coll
  Put.putWord8 sort