{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Orville.PostgreSQL.PgCatalog.PgAttribute
( PgAttribute (..)
, pgAttributeMaxLength
, AttributeName
, attributeNameToString
, AttributeNumber
, attributeNumberToInt16
, attributeNumberFromInt16
, attributeNumberTextBuilder
, attributeNumberParser
, isOrdinaryColumn
, pgAttributeTable
, attributeRelationOidField
, attributeNameField
, attributeTypeOidField
, attributeLengthField
, attributeIsDroppedField
, attributeNumberTypeField
)
where
import qualified Data.Attoparsec.Text as AttoText
import Data.Int (Int16, Int32)
import qualified Data.String as String
import qualified Data.Text as T
import qualified Data.Text.Lazy.Builder as LTB
import qualified Data.Text.Lazy.Builder.Int as LTBI
import qualified Database.PostgreSQL.LibPQ as LibPQ
import qualified Orville.PostgreSQL as Orville
import Orville.PostgreSQL.PgCatalog.OidField (oidTypeField)
data PgAttribute = PgAttribute
{ PgAttribute -> Oid
pgAttributeRelationOid :: LibPQ.Oid
, PgAttribute -> AttributeName
pgAttributeName :: AttributeName
, PgAttribute -> AttributeNumber
pgAttributeNumber :: AttributeNumber
, PgAttribute -> Oid
pgAttributeTypeOid :: LibPQ.Oid
, PgAttribute -> Int16
pgAttributeLength :: Int16
, PgAttribute -> Int32
pgAttributeTypeModifier :: Int32
, PgAttribute -> Bool
pgAttributeIsDropped :: Bool
, PgAttribute -> Bool
pgAttributeIsNotNull :: Bool
}
pgAttributeMaxLength :: PgAttribute -> Maybe Int32
pgAttributeMaxLength :: PgAttribute -> Maybe Int32
pgAttributeMaxLength PgAttribute
attr =
let
charTypes :: [Oid]
charTypes =
[CUInt -> Oid
LibPQ.Oid CUInt
1042, CUInt -> Oid
LibPQ.Oid CUInt
1043]
bitTypes :: [Oid]
bitTypes =
[CUInt -> Oid
LibPQ.Oid CUInt
1560, CUInt -> Oid
LibPQ.Oid CUInt
1562]
typeOid :: Oid
typeOid =
PgAttribute -> Oid
pgAttributeTypeOid PgAttribute
attr
typeMod :: Int32
typeMod =
PgAttribute -> Int32
pgAttributeTypeModifier PgAttribute
attr
in
if Int32
typeMod Int32 -> Int32 -> Bool
forall a. Eq a => a -> a -> Bool
== -Int32
1
then Maybe Int32
forall a. Maybe a
Nothing
else
if Oid
typeOid Oid -> [Oid] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [Oid]
charTypes
then Int32 -> Maybe Int32
forall a. a -> Maybe a
Just (Int32
typeMod Int32 -> Int32 -> Int32
forall a. Num a => a -> a -> a
- Int32
4)
else
if Oid
typeOid Oid -> [Oid] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [Oid]
bitTypes
then Int32 -> Maybe Int32
forall a. a -> Maybe a
Just Int32
typeMod
else Maybe Int32
forall a. Maybe a
Nothing
isOrdinaryColumn :: PgAttribute -> Bool
isOrdinaryColumn :: PgAttribute -> Bool
isOrdinaryColumn PgAttribute
attr =
PgAttribute -> AttributeNumber
pgAttributeNumber PgAttribute
attr AttributeNumber -> AttributeNumber -> Bool
forall a. Ord a => a -> a -> Bool
> Int16 -> AttributeNumber
AttributeNumber Int16
0
newtype AttributeName
= AttributeName T.Text
deriving (Int -> AttributeName -> ShowS
[AttributeName] -> ShowS
AttributeName -> String
(Int -> AttributeName -> ShowS)
-> (AttributeName -> String)
-> ([AttributeName] -> ShowS)
-> Show AttributeName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AttributeName -> ShowS
showsPrec :: Int -> AttributeName -> ShowS
$cshow :: AttributeName -> String
show :: AttributeName -> String
$cshowList :: [AttributeName] -> ShowS
showList :: [AttributeName] -> ShowS
Show, AttributeName -> AttributeName -> Bool
(AttributeName -> AttributeName -> Bool)
-> (AttributeName -> AttributeName -> Bool) -> Eq AttributeName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AttributeName -> AttributeName -> Bool
== :: AttributeName -> AttributeName -> Bool
$c/= :: AttributeName -> AttributeName -> Bool
/= :: AttributeName -> AttributeName -> Bool
Eq, Eq AttributeName
Eq AttributeName
-> (AttributeName -> AttributeName -> Ordering)
-> (AttributeName -> AttributeName -> Bool)
-> (AttributeName -> AttributeName -> Bool)
-> (AttributeName -> AttributeName -> Bool)
-> (AttributeName -> AttributeName -> Bool)
-> (AttributeName -> AttributeName -> AttributeName)
-> (AttributeName -> AttributeName -> AttributeName)
-> Ord AttributeName
AttributeName -> AttributeName -> Bool
AttributeName -> AttributeName -> Ordering
AttributeName -> AttributeName -> AttributeName
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
$ccompare :: AttributeName -> AttributeName -> Ordering
compare :: AttributeName -> AttributeName -> Ordering
$c< :: AttributeName -> AttributeName -> Bool
< :: AttributeName -> AttributeName -> Bool
$c<= :: AttributeName -> AttributeName -> Bool
<= :: AttributeName -> AttributeName -> Bool
$c> :: AttributeName -> AttributeName -> Bool
> :: AttributeName -> AttributeName -> Bool
$c>= :: AttributeName -> AttributeName -> Bool
>= :: AttributeName -> AttributeName -> Bool
$cmax :: AttributeName -> AttributeName -> AttributeName
max :: AttributeName -> AttributeName -> AttributeName
$cmin :: AttributeName -> AttributeName -> AttributeName
min :: AttributeName -> AttributeName -> AttributeName
Ord, String -> AttributeName
(String -> AttributeName) -> IsString AttributeName
forall a. (String -> a) -> IsString a
$cfromString :: String -> AttributeName
fromString :: String -> AttributeName
String.IsString)
attributeNameToString :: AttributeName -> String
attributeNameToString :: AttributeName -> String
attributeNameToString (AttributeName Text
txt) =
Text -> String
T.unpack Text
txt
newtype AttributeNumber
= AttributeNumber Int16
deriving (Int -> AttributeNumber -> ShowS
[AttributeNumber] -> ShowS
AttributeNumber -> String
(Int -> AttributeNumber -> ShowS)
-> (AttributeNumber -> String)
-> ([AttributeNumber] -> ShowS)
-> Show AttributeNumber
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AttributeNumber -> ShowS
showsPrec :: Int -> AttributeNumber -> ShowS
$cshow :: AttributeNumber -> String
show :: AttributeNumber -> String
$cshowList :: [AttributeNumber] -> ShowS
showList :: [AttributeNumber] -> ShowS
Show, AttributeNumber -> AttributeNumber -> Bool
(AttributeNumber -> AttributeNumber -> Bool)
-> (AttributeNumber -> AttributeNumber -> Bool)
-> Eq AttributeNumber
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AttributeNumber -> AttributeNumber -> Bool
== :: AttributeNumber -> AttributeNumber -> Bool
$c/= :: AttributeNumber -> AttributeNumber -> Bool
/= :: AttributeNumber -> AttributeNumber -> Bool
Eq, Eq AttributeNumber
Eq AttributeNumber
-> (AttributeNumber -> AttributeNumber -> Ordering)
-> (AttributeNumber -> AttributeNumber -> Bool)
-> (AttributeNumber -> AttributeNumber -> Bool)
-> (AttributeNumber -> AttributeNumber -> Bool)
-> (AttributeNumber -> AttributeNumber -> Bool)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> Ord AttributeNumber
AttributeNumber -> AttributeNumber -> Bool
AttributeNumber -> AttributeNumber -> Ordering
AttributeNumber -> AttributeNumber -> AttributeNumber
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
$ccompare :: AttributeNumber -> AttributeNumber -> Ordering
compare :: AttributeNumber -> AttributeNumber -> Ordering
$c< :: AttributeNumber -> AttributeNumber -> Bool
< :: AttributeNumber -> AttributeNumber -> Bool
$c<= :: AttributeNumber -> AttributeNumber -> Bool
<= :: AttributeNumber -> AttributeNumber -> Bool
$c> :: AttributeNumber -> AttributeNumber -> Bool
> :: AttributeNumber -> AttributeNumber -> Bool
$c>= :: AttributeNumber -> AttributeNumber -> Bool
>= :: AttributeNumber -> AttributeNumber -> Bool
$cmax :: AttributeNumber -> AttributeNumber -> AttributeNumber
max :: AttributeNumber -> AttributeNumber -> AttributeNumber
$cmin :: AttributeNumber -> AttributeNumber -> AttributeNumber
min :: AttributeNumber -> AttributeNumber -> AttributeNumber
Ord, Int -> AttributeNumber
AttributeNumber -> Int
AttributeNumber -> [AttributeNumber]
AttributeNumber -> AttributeNumber
AttributeNumber -> AttributeNumber -> [AttributeNumber]
AttributeNumber
-> AttributeNumber -> AttributeNumber -> [AttributeNumber]
(AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber)
-> (Int -> AttributeNumber)
-> (AttributeNumber -> Int)
-> (AttributeNumber -> [AttributeNumber])
-> (AttributeNumber -> AttributeNumber -> [AttributeNumber])
-> (AttributeNumber -> AttributeNumber -> [AttributeNumber])
-> (AttributeNumber
-> AttributeNumber -> AttributeNumber -> [AttributeNumber])
-> Enum AttributeNumber
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: AttributeNumber -> AttributeNumber
succ :: AttributeNumber -> AttributeNumber
$cpred :: AttributeNumber -> AttributeNumber
pred :: AttributeNumber -> AttributeNumber
$ctoEnum :: Int -> AttributeNumber
toEnum :: Int -> AttributeNumber
$cfromEnum :: AttributeNumber -> Int
fromEnum :: AttributeNumber -> Int
$cenumFrom :: AttributeNumber -> [AttributeNumber]
enumFrom :: AttributeNumber -> [AttributeNumber]
$cenumFromThen :: AttributeNumber -> AttributeNumber -> [AttributeNumber]
enumFromThen :: AttributeNumber -> AttributeNumber -> [AttributeNumber]
$cenumFromTo :: AttributeNumber -> AttributeNumber -> [AttributeNumber]
enumFromTo :: AttributeNumber -> AttributeNumber -> [AttributeNumber]
$cenumFromThenTo :: AttributeNumber
-> AttributeNumber -> AttributeNumber -> [AttributeNumber]
enumFromThenTo :: AttributeNumber
-> AttributeNumber -> AttributeNumber -> [AttributeNumber]
Enum, Integer -> AttributeNumber
AttributeNumber -> AttributeNumber
AttributeNumber -> AttributeNumber -> AttributeNumber
(AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber)
-> (Integer -> AttributeNumber)
-> Num AttributeNumber
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: AttributeNumber -> AttributeNumber -> AttributeNumber
+ :: AttributeNumber -> AttributeNumber -> AttributeNumber
$c- :: AttributeNumber -> AttributeNumber -> AttributeNumber
- :: AttributeNumber -> AttributeNumber -> AttributeNumber
$c* :: AttributeNumber -> AttributeNumber -> AttributeNumber
* :: AttributeNumber -> AttributeNumber -> AttributeNumber
$cnegate :: AttributeNumber -> AttributeNumber
negate :: AttributeNumber -> AttributeNumber
$cabs :: AttributeNumber -> AttributeNumber
abs :: AttributeNumber -> AttributeNumber
$csignum :: AttributeNumber -> AttributeNumber
signum :: AttributeNumber -> AttributeNumber
$cfromInteger :: Integer -> AttributeNumber
fromInteger :: Integer -> AttributeNumber
Num, Enum AttributeNumber
Real AttributeNumber
Real AttributeNumber
-> Enum AttributeNumber
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber -> AttributeNumber -> AttributeNumber)
-> (AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber))
-> (AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber))
-> (AttributeNumber -> Integer)
-> Integral AttributeNumber
AttributeNumber -> Integer
AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber)
AttributeNumber -> AttributeNumber -> AttributeNumber
forall a.
Real a
-> Enum a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: AttributeNumber -> AttributeNumber -> AttributeNumber
quot :: AttributeNumber -> AttributeNumber -> AttributeNumber
$crem :: AttributeNumber -> AttributeNumber -> AttributeNumber
rem :: AttributeNumber -> AttributeNumber -> AttributeNumber
$cdiv :: AttributeNumber -> AttributeNumber -> AttributeNumber
div :: AttributeNumber -> AttributeNumber -> AttributeNumber
$cmod :: AttributeNumber -> AttributeNumber -> AttributeNumber
mod :: AttributeNumber -> AttributeNumber -> AttributeNumber
$cquotRem :: AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber)
quotRem :: AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber)
$cdivMod :: AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber)
divMod :: AttributeNumber
-> AttributeNumber -> (AttributeNumber, AttributeNumber)
$ctoInteger :: AttributeNumber -> Integer
toInteger :: AttributeNumber -> Integer
Integral, Num AttributeNumber
Ord AttributeNumber
Num AttributeNumber
-> Ord AttributeNumber
-> (AttributeNumber -> Rational)
-> Real AttributeNumber
AttributeNumber -> Rational
forall a. Num a -> Ord a -> (a -> Rational) -> Real a
$ctoRational :: AttributeNumber -> Rational
toRational :: AttributeNumber -> Rational
Real)
attributeNumberToInt16 :: AttributeNumber -> Int16
attributeNumberToInt16 :: AttributeNumber -> Int16
attributeNumberToInt16 (AttributeNumber Int16
int) = Int16
int
attributeNumberFromInt16 :: Int16 -> AttributeNumber
attributeNumberFromInt16 :: Int16 -> AttributeNumber
attributeNumberFromInt16 = Int16 -> AttributeNumber
AttributeNumber
attributeNumberParser :: AttoText.Parser AttributeNumber
attributeNumberParser :: Parser AttributeNumber
attributeNumberParser =
Parser AttributeNumber -> Parser AttributeNumber
forall a. Num a => Parser a -> Parser a
AttoText.signed Parser AttributeNumber
forall a. Integral a => Parser a
AttoText.decimal
attributeNumberTextBuilder :: AttributeNumber -> LTB.Builder
attributeNumberTextBuilder :: AttributeNumber -> Builder
attributeNumberTextBuilder =
Int16 -> Builder
forall a. Integral a => a -> Builder
LTBI.decimal (Int16 -> Builder)
-> (AttributeNumber -> Int16) -> AttributeNumber -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AttributeNumber -> Int16
attributeNumberToInt16
pgAttributeTable :: Orville.TableDefinition Orville.NoKey PgAttribute PgAttribute
pgAttributeTable :: TableDefinition NoKey PgAttribute PgAttribute
pgAttributeTable =
String
-> TableDefinition NoKey PgAttribute PgAttribute
-> TableDefinition NoKey PgAttribute PgAttribute
forall key writeEntity readEntity.
String
-> TableDefinition key writeEntity readEntity
-> TableDefinition key writeEntity readEntity
Orville.setTableSchema String
"pg_catalog" (TableDefinition NoKey PgAttribute PgAttribute
-> TableDefinition NoKey PgAttribute PgAttribute)
-> TableDefinition NoKey PgAttribute PgAttribute
-> TableDefinition NoKey PgAttribute PgAttribute
forall a b. (a -> b) -> a -> b
$
String
-> SqlMarshaller PgAttribute PgAttribute
-> TableDefinition NoKey PgAttribute PgAttribute
forall writeEntity readEntity.
String
-> SqlMarshaller writeEntity readEntity
-> TableDefinition NoKey writeEntity readEntity
Orville.mkTableDefinitionWithoutKey
String
"pg_attribute"
SqlMarshaller PgAttribute PgAttribute
pgAttributeMarshaller
pgAttributeMarshaller :: Orville.SqlMarshaller PgAttribute PgAttribute
pgAttributeMarshaller :: SqlMarshaller PgAttribute PgAttribute
pgAttributeMarshaller =
Oid
-> AttributeName
-> AttributeNumber
-> Oid
-> Int16
-> Int32
-> Bool
-> Bool
-> PgAttribute
PgAttribute
(Oid
-> AttributeName
-> AttributeNumber
-> Oid
-> Int16
-> Int32
-> Bool
-> Bool
-> PgAttribute)
-> SqlMarshaller PgAttribute Oid
-> SqlMarshaller
PgAttribute
(AttributeName
-> AttributeNumber
-> Oid
-> Int16
-> Int32
-> Bool
-> Bool
-> PgAttribute)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (PgAttribute -> Oid)
-> FieldDefinition NotNull Oid -> SqlMarshaller PgAttribute Oid
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Oid
pgAttributeRelationOid FieldDefinition NotNull Oid
attributeRelationOidField
SqlMarshaller
PgAttribute
(AttributeName
-> AttributeNumber
-> Oid
-> Int16
-> Int32
-> Bool
-> Bool
-> PgAttribute)
-> SqlMarshaller PgAttribute AttributeName
-> SqlMarshaller
PgAttribute
(AttributeNumber
-> Oid -> Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> AttributeName)
-> FieldDefinition NotNull AttributeName
-> SqlMarshaller PgAttribute AttributeName
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> AttributeName
pgAttributeName FieldDefinition NotNull AttributeName
attributeNameField
SqlMarshaller
PgAttribute
(AttributeNumber
-> Oid -> Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
-> SqlMarshaller PgAttribute AttributeNumber
-> SqlMarshaller
PgAttribute (Oid -> Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> AttributeNumber)
-> FieldDefinition NotNull AttributeNumber
-> SqlMarshaller PgAttribute AttributeNumber
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> AttributeNumber
pgAttributeNumber FieldDefinition NotNull AttributeNumber
attributeNumberField
SqlMarshaller
PgAttribute (Oid -> Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
-> SqlMarshaller PgAttribute Oid
-> SqlMarshaller
PgAttribute (Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> Oid)
-> FieldDefinition NotNull Oid -> SqlMarshaller PgAttribute Oid
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Oid
pgAttributeTypeOid FieldDefinition NotNull Oid
attributeTypeOidField
SqlMarshaller
PgAttribute (Int16 -> Int32 -> Bool -> Bool -> PgAttribute)
-> SqlMarshaller PgAttribute Int16
-> SqlMarshaller PgAttribute (Int32 -> Bool -> Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> Int16)
-> FieldDefinition NotNull Int16 -> SqlMarshaller PgAttribute Int16
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Int16
pgAttributeLength FieldDefinition NotNull Int16
attributeLengthField
SqlMarshaller PgAttribute (Int32 -> Bool -> Bool -> PgAttribute)
-> SqlMarshaller PgAttribute Int32
-> SqlMarshaller PgAttribute (Bool -> Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> Int32)
-> FieldDefinition NotNull Int32 -> SqlMarshaller PgAttribute Int32
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Int32
pgAttributeTypeModifier FieldDefinition NotNull Int32
attributeTypeModifierField
SqlMarshaller PgAttribute (Bool -> Bool -> PgAttribute)
-> SqlMarshaller PgAttribute Bool
-> SqlMarshaller PgAttribute (Bool -> PgAttribute)
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> Bool)
-> FieldDefinition NotNull Bool -> SqlMarshaller PgAttribute Bool
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Bool
pgAttributeIsDropped FieldDefinition NotNull Bool
attributeIsDroppedField
SqlMarshaller PgAttribute (Bool -> PgAttribute)
-> SqlMarshaller PgAttribute Bool
-> SqlMarshaller PgAttribute PgAttribute
forall a b.
SqlMarshaller PgAttribute (a -> b)
-> SqlMarshaller PgAttribute a -> SqlMarshaller PgAttribute b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (PgAttribute -> Bool)
-> FieldDefinition NotNull Bool -> SqlMarshaller PgAttribute Bool
forall writeEntity fieldValue nullability.
(writeEntity -> fieldValue)
-> FieldDefinition nullability fieldValue
-> SqlMarshaller writeEntity fieldValue
Orville.marshallField PgAttribute -> Bool
pgAttributeIsNotNull FieldDefinition NotNull Bool
attributeIsNotNullField
attributeRelationOidField :: Orville.FieldDefinition Orville.NotNull LibPQ.Oid
attributeRelationOidField :: FieldDefinition NotNull Oid
attributeRelationOidField =
String -> FieldDefinition NotNull Oid
oidTypeField String
"attrelid"
attributeNameField :: Orville.FieldDefinition Orville.NotNull AttributeName
attributeNameField :: FieldDefinition NotNull AttributeName
attributeNameField =
FieldDefinition NotNull Text
-> FieldDefinition NotNull AttributeName
forall a b nullability.
(Coercible a b, Coercible b a) =>
FieldDefinition nullability a -> FieldDefinition nullability b
Orville.coerceField (FieldDefinition NotNull Text
-> FieldDefinition NotNull AttributeName)
-> FieldDefinition NotNull Text
-> FieldDefinition NotNull AttributeName
forall a b. (a -> b) -> a -> b
$
String -> FieldDefinition NotNull Text
Orville.unboundedTextField String
"attname"
attributeNumberField :: Orville.FieldDefinition Orville.NotNull AttributeNumber
attributeNumberField :: FieldDefinition NotNull AttributeNumber
attributeNumberField =
String -> FieldDefinition NotNull AttributeNumber
attributeNumberTypeField String
"attnum"
attributeNumberTypeField :: String -> Orville.FieldDefinition Orville.NotNull AttributeNumber
attributeNumberTypeField :: String -> FieldDefinition NotNull AttributeNumber
attributeNumberTypeField =
FieldDefinition NotNull Int16
-> FieldDefinition NotNull AttributeNumber
forall a b nullability.
(Coercible a b, Coercible b a) =>
FieldDefinition nullability a -> FieldDefinition nullability b
Orville.coerceField (FieldDefinition NotNull Int16
-> FieldDefinition NotNull AttributeNumber)
-> (String -> FieldDefinition NotNull Int16)
-> String
-> FieldDefinition NotNull AttributeNumber
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> FieldDefinition NotNull Int16
Orville.smallIntegerField
attributeTypeOidField :: Orville.FieldDefinition Orville.NotNull LibPQ.Oid
attributeTypeOidField :: FieldDefinition NotNull Oid
attributeTypeOidField =
String -> FieldDefinition NotNull Oid
oidTypeField String
"atttypid"
attributeLengthField :: Orville.FieldDefinition Orville.NotNull Int16
attributeLengthField :: FieldDefinition NotNull Int16
attributeLengthField =
String -> FieldDefinition NotNull Int16
Orville.smallIntegerField String
"attlen"
attributeTypeModifierField :: Orville.FieldDefinition Orville.NotNull Int32
attributeTypeModifierField :: FieldDefinition NotNull Int32
attributeTypeModifierField =
String -> FieldDefinition NotNull Int32
Orville.integerField String
"atttypmod"
attributeIsDroppedField :: Orville.FieldDefinition Orville.NotNull Bool
attributeIsDroppedField :: FieldDefinition NotNull Bool
attributeIsDroppedField =
String -> FieldDefinition NotNull Bool
Orville.booleanField String
"attisdropped"
attributeIsNotNullField :: Orville.FieldDefinition Orville.NotNull Bool
attributeIsNotNullField :: FieldDefinition NotNull Bool
attributeIsNotNullField =
String -> FieldDefinition NotNull Bool
Orville.booleanField String
"attnotnull"