opaleye-0.9.5.1: An SQL-generating DSL targeting PostgreSQL
Safe HaskellSafe-Inferred
LanguageHaskell2010

Opaleye.Internal.Unpackspec

Synopsis

Documentation

newtype Unpackspec fields fields' Source #

Constructors

Unpackspec (PackMap PrimExpr PrimExpr fields fields')

An Unpackspec fields fields' allows you to extract and modify a sequence of PrimExprs inside a value of type fields.

For example, the Default instance of type Unpackspec (Field a, Field b) (Field a, Field b) allows you to manipulate or extract the two PrimExprs inside a (Field a, Field b). The Default instance of type Foo (Field a) (Field b) (Field c) will allow you to manipulate or extract the three PrimExprs contained therein (for a user-defined product type Foo, assuming the makeAdaptorAndInstance splice from Data.Profunctor.Product.TH has been run).

Users should almost never need to create or manipulate Unpackspecs. Typically they will be created automatically by the Default instance. If you really need to you can create Unpackspecs by hand using unpackspecField and the Profunctor, ProductProfunctor and SumProfunctor operations.

Instances

Instances details
ProductProfunctor Unpackspec Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

purePP :: b -> Unpackspec a b #

(****) :: Unpackspec a (b -> c) -> Unpackspec a b -> Unpackspec a c #

empty :: Unpackspec () () #

(***!) :: Unpackspec a b -> Unpackspec a' b' -> Unpackspec (a, a') (b, b') #

SumProfunctor Unpackspec Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

(+++!) :: Unpackspec a b -> Unpackspec a' b' -> Unpackspec (Either a a') (Either b b') #

Profunctor Unpackspec Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

dimap :: (a -> b) -> (c -> d) -> Unpackspec b c -> Unpackspec a d #

lmap :: (a -> b) -> Unpackspec b c -> Unpackspec a c #

rmap :: (b -> c) -> Unpackspec a b -> Unpackspec a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Unpackspec a b -> Unpackspec a c #

(.#) :: forall a b c q. Coercible b a => Unpackspec b c -> q a b -> Unpackspec a c #

Default Unpackspec a b => Default Unpackspec (MaybeFields a) (MaybeFields b) Source # 
Instance details

Defined in Opaleye.Internal.MaybeFields

Default Unpackspec (Field_ n a) (Field_ n a) Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

def :: Unpackspec (Field_ n a) (Field_ n a) #

Applicative (Unpackspec a) Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

pure :: a0 -> Unpackspec a a0 #

(<*>) :: Unpackspec a (a0 -> b) -> Unpackspec a a0 -> Unpackspec a b #

liftA2 :: (a0 -> b -> c) -> Unpackspec a a0 -> Unpackspec a b -> Unpackspec a c #

(*>) :: Unpackspec a a0 -> Unpackspec a b -> Unpackspec a b #

(<*) :: Unpackspec a a0 -> Unpackspec a b -> Unpackspec a a0 #

Functor (Unpackspec a) Source # 
Instance details

Defined in Opaleye.Internal.Unpackspec

Methods

fmap :: (a0 -> b) -> Unpackspec a a0 -> Unpackspec a b #

(<$) :: a0 -> Unpackspec a b -> Unpackspec a a0 #

unpackspecField :: Unpackspec (Field_ n a) (Field_ n a) Source #

Target the single PrimExpr inside a 'F.Field n'

runUnpackspec :: Applicative f => Unpackspec columns b -> (PrimExpr -> f PrimExpr) -> columns -> f b Source #

Modify all the targeted PrimExprs

collectPEs :: Unpackspec s t -> s -> [PrimExpr] Source #

Extract all the targeted PrimExprs