module Database.PostgreSQL.Store.OIDs (
OIDQ,
bool,
int2,
int4,
int8,
float4,
float8,
numeric,
char,
varchar,
text,
bytea,
timestamp,
timestamptz
) where
import Language.Haskell.TH
import qualified Database.PostgreSQL.LibPQ as P
class GenOID a where
genOID :: Integer -> Q a
instance GenOID Exp where
genOID oid = [e| P.Oid $(litE (IntegerL oid)) |]
instance GenOID Pat where
genOID oid = [p| P.Oid $(pure (LitP (IntegerL oid))) |]
type OIDQ = forall a . GenOID a => Q a
bool :: OIDQ
bool = genOID 16
int2 :: OIDQ
int2 = genOID 21
int4 :: OIDQ
int4 = genOID 23
int8 :: OIDQ
int8 = genOID 20
float4 :: OIDQ
float4 = genOID 700
float8 :: OIDQ
float8 = genOID 701
numeric :: OIDQ
numeric = genOID 1700
char :: OIDQ
char = genOID 1042
varchar :: OIDQ
varchar = genOID 1043
text :: OIDQ
text = genOID 25
bytea :: OIDQ
bytea = genOID 17
timestamp :: OIDQ
timestamp = genOID 1114
timestamptz :: OIDQ
timestamptz = genOID 1184