module PostgresqlTypes.Via.IsScalar where import qualified Data.Attoparsec.Text as Attoparsec import qualified Data.Text as Text import PostgresqlTypes.Algebra import PostgresqlTypes.Prelude newtype ViaIsScalar a = ViaIsScalar a deriving newtype (ViaIsScalar a -> ViaIsScalar a -> Bool (ViaIsScalar a -> ViaIsScalar a -> Bool) -> (ViaIsScalar a -> ViaIsScalar a -> Bool) -> Eq (ViaIsScalar a) forall a. Eq a => ViaIsScalar a -> ViaIsScalar a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => ViaIsScalar a -> ViaIsScalar a -> Bool == :: ViaIsScalar a -> ViaIsScalar a -> Bool $c/= :: forall a. Eq a => ViaIsScalar a -> ViaIsScalar a -> Bool /= :: ViaIsScalar a -> ViaIsScalar a -> Bool Eq, Eq (ViaIsScalar a) Eq (ViaIsScalar a) => (ViaIsScalar a -> ViaIsScalar a -> Ordering) -> (ViaIsScalar a -> ViaIsScalar a -> Bool) -> (ViaIsScalar a -> ViaIsScalar a -> Bool) -> (ViaIsScalar a -> ViaIsScalar a -> Bool) -> (ViaIsScalar a -> ViaIsScalar a -> Bool) -> (ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a) -> (ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a) -> Ord (ViaIsScalar a) ViaIsScalar a -> ViaIsScalar a -> Bool ViaIsScalar a -> ViaIsScalar a -> Ordering ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (ViaIsScalar a) forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Bool forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Ordering forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a $ccompare :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Ordering compare :: ViaIsScalar a -> ViaIsScalar a -> Ordering $c< :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Bool < :: ViaIsScalar a -> ViaIsScalar a -> Bool $c<= :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Bool <= :: ViaIsScalar a -> ViaIsScalar a -> Bool $c> :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Bool > :: ViaIsScalar a -> ViaIsScalar a -> Bool $c>= :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> Bool >= :: ViaIsScalar a -> ViaIsScalar a -> Bool $cmax :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a max :: ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a $cmin :: forall a. Ord a => ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a min :: ViaIsScalar a -> ViaIsScalar a -> ViaIsScalar a Ord, Gen (ViaIsScalar a) Gen (ViaIsScalar a) -> (ViaIsScalar a -> [ViaIsScalar a]) -> Arbitrary (ViaIsScalar a) ViaIsScalar a -> [ViaIsScalar a] forall a. Gen a -> (a -> [a]) -> Arbitrary a forall a. Arbitrary a => Gen (ViaIsScalar a) forall a. Arbitrary a => ViaIsScalar a -> [ViaIsScalar a] $carbitrary :: forall a. Arbitrary a => Gen (ViaIsScalar a) arbitrary :: Gen (ViaIsScalar a) $cshrink :: forall a. Arbitrary a => ViaIsScalar a -> [ViaIsScalar a] shrink :: ViaIsScalar a -> [ViaIsScalar a] Arbitrary, Parser (ViaIsScalar a) Variable (Either DecodingError (ViaIsScalar a)) Tagged (ViaIsScalar a) [Text] Tagged (ViaIsScalar a) (Maybe Word32) Tagged (ViaIsScalar a) (Maybe Text) Tagged (ViaIsScalar a) Text Tagged (ViaIsScalar a) (Maybe Text) -> Tagged (ViaIsScalar a) Text -> Tagged (ViaIsScalar a) (Maybe Word32) -> Tagged (ViaIsScalar a) (Maybe Word32) -> Tagged (ViaIsScalar a) [Text] -> Tagged (ViaIsScalar a) Text -> (ViaIsScalar a -> Write) -> Variable (Either DecodingError (ViaIsScalar a)) -> (ViaIsScalar a -> TextBuilder) -> Parser (ViaIsScalar a) -> IsScalar (ViaIsScalar a) ViaIsScalar a -> Write ViaIsScalar a -> TextBuilder forall a. IsScalar a => Parser (ViaIsScalar a) forall a. IsScalar a => Variable (Either DecodingError (ViaIsScalar a)) forall a. IsScalar a => Tagged (ViaIsScalar a) [Text] forall a. IsScalar a => Tagged (ViaIsScalar a) (Maybe Word32) forall a. IsScalar a => Tagged (ViaIsScalar a) (Maybe Text) forall a. IsScalar a => Tagged (ViaIsScalar a) Text forall a. IsScalar a => ViaIsScalar a -> Write forall a. IsScalar a => ViaIsScalar a -> TextBuilder forall a. Tagged a (Maybe Text) -> Tagged a Text -> Tagged a (Maybe Word32) -> Tagged a (Maybe Word32) -> Tagged a [Text] -> Tagged a Text -> (a -> Write) -> Variable (Either DecodingError a) -> (a -> TextBuilder) -> Parser a -> IsScalar a $cschemaName :: forall a. IsScalar a => Tagged (ViaIsScalar a) (Maybe Text) schemaName :: Tagged (ViaIsScalar a) (Maybe Text) $ctypeName :: forall a. IsScalar a => Tagged (ViaIsScalar a) Text typeName :: Tagged (ViaIsScalar a) Text $cbaseOid :: forall a. IsScalar a => Tagged (ViaIsScalar a) (Maybe Word32) baseOid :: Tagged (ViaIsScalar a) (Maybe Word32) $carrayOid :: forall a. IsScalar a => Tagged (ViaIsScalar a) (Maybe Word32) arrayOid :: Tagged (ViaIsScalar a) (Maybe Word32) $ctypeParams :: forall a. IsScalar a => Tagged (ViaIsScalar a) [Text] typeParams :: Tagged (ViaIsScalar a) [Text] $ctypeSignature :: forall a. IsScalar a => Tagged (ViaIsScalar a) Text typeSignature :: Tagged (ViaIsScalar a) Text $cbinaryEncoder :: forall a. IsScalar a => ViaIsScalar a -> Write binaryEncoder :: ViaIsScalar a -> Write $cbinaryDecoder :: forall a. IsScalar a => Variable (Either DecodingError (ViaIsScalar a)) binaryDecoder :: Variable (Either DecodingError (ViaIsScalar a)) $ctextualEncoder :: forall a. IsScalar a => ViaIsScalar a -> TextBuilder textualEncoder :: ViaIsScalar a -> TextBuilder $ctextualDecoder :: forall a. IsScalar a => Parser (ViaIsScalar a) textualDecoder :: Parser (ViaIsScalar a) IsScalar) instance (IsScalar a) => Show (ViaIsScalar a) where showsPrec :: Int -> ViaIsScalar a -> ShowS showsPrec Int d (ViaIsScalar a a) = Int -> TextBuilder -> ShowS forall a. Show a => Int -> a -> ShowS showsPrec Int d (a -> TextBuilder forall a. IsScalar a => a -> TextBuilder textualEncoder a a) instance (IsScalar a) => Read (ViaIsScalar a) where readsPrec :: Int -> ReadS (ViaIsScalar a) readsPrec Int d String str = [ (a -> ViaIsScalar a forall a. a -> ViaIsScalar a ViaIsScalar a a, String rest) | (Text txt, String rest) <- Int -> ReadS Text forall a. Read a => Int -> ReadS a readsPrec Int d String str, let parsed :: Either String a parsed = Parser a -> Text -> Either String a forall a. Parser a -> Text -> Either String a Attoparsec.parseOnly (forall a. IsScalar a => Parser a textualDecoder @a Parser a -> Parser Text () -> Parser a forall a b. Parser Text a -> Parser Text b -> Parser Text a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Parser Text () forall t. Chunk t => Parser t () Attoparsec.endOfInput) Text txt, Right a a <- [Either String a parsed] ] instance (IsScalar a) => IsString (ViaIsScalar a) where fromString :: String -> ViaIsScalar a fromString String string = case Parser a -> Text -> Either String a forall a. Parser a -> Text -> Either String a Attoparsec.parseOnly (forall a. IsScalar a => Parser a textualDecoder @a Parser a -> Parser Text () -> Parser a forall a b. Parser Text a -> Parser Text b -> Parser Text a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Parser Text () forall t. Chunk t => Parser t () Attoparsec.endOfInput) (String -> Text Text.pack String string) of Left String err -> String -> ViaIsScalar a forall a. HasCallStack => String -> a error (String "ViaIsScalar fromString: failed to parse: " String -> ShowS forall a. Semigroup a => a -> a -> a <> String err) Right a a -> a -> ViaIsScalar a forall a. a -> ViaIsScalar a ViaIsScalar a a