{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module LawfulConversions.Relations.StrictTextBuilderAndUuid where

#if MIN_VERSION_text(2,1,2)

import qualified Data.UUID.Types
import qualified Data.Text.Encoding
import LawfulConversions.Classes
import LawfulConversions.Prelude

instance IsSome Data.Text.Encoding.StrictTextBuilder UUID where
  to = Data.Text.Encoding.textToStrictBuilder . Data.UUID.Types.toText
  maybeFrom = Data.UUID.Types.fromText . Data.Text.Encoding.strictBuilderToText

#elif MIN_VERSION_text(2,0,2)

import qualified Data.UUID.Types
import qualified Data.Text.Encoding
import LawfulConversions.Classes
import LawfulConversions.Prelude

instance IsSome Data.Text.Encoding.StrictBuilder UUID where
  to :: UUID -> StrictBuilder
to = Text -> StrictBuilder
Data.Text.Encoding.textToStrictBuilder (Text -> StrictBuilder) -> (UUID -> Text) -> UUID -> StrictBuilder
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. UUID -> Text
Data.UUID.Types.toText
  maybeFrom :: StrictBuilder -> Maybe UUID
maybeFrom = Text -> Maybe UUID
Data.UUID.Types.fromText (Text -> Maybe UUID)
-> (StrictBuilder -> Text) -> StrictBuilder -> Maybe UUID
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. StrictBuilder -> Text
Data.Text.Encoding.strictBuilderToText

#endif