relational-query-0.9.0.2: Typeful, Modular, Relational, algebraic query engine

Copyright2013-2017 Kei Hibino
LicenseBSD3
Maintainerex8k.hibino@gmail.com
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Database.Relational.Query.Pi.Unsafe

Contents

Description

This module defines typed projection path objects. Contains internal structure and unsafe interfaces.

Synopsis

Projection path

data Pi r0 r1 Source #

Projection path from type r0 into type r1. This type also indicate key object which type is r1 for record type r0.

Instances

ProjectableApplicative (Pi a) Source #

Compose projection path Pi which has record result type using applicative style.

Methods

(|*|) :: Pi a (a -> b) -> Pi a a -> Pi a b Source #

ProjectableFunctor (Pi a) Source #

Compose seed of projection path Pi which has record result type.

Methods

(|$|) :: ProductConstructor (a -> b) => (a -> b) -> Pi a a -> Pi a b Source #

pfmap :: ProductConstructor (a -> b) => (a -> b) -> Pi r a -> Pi r b Source #

Projectable fmap of Pi type.

pap :: Pi r (a -> b) -> Pi r a -> Pi r b Source #

Projectable ap of Pi type.

width :: Pi r a -> Int Source #

Get record width.

(<.>) :: Pi a b -> Pi b c -> Pi a c infixl 8 Source #

Compose projection path.

(<?.>) :: Pi a (Maybe b) -> Pi b c -> Pi a (Maybe c) infixl 8 Source #

Compose projection path. Maybe phantom functor is map-ed.

(<?.?>) :: Pi a (Maybe b) -> Pi b (Maybe c) -> Pi a (Maybe c) infixl 8 Source #

Compose projection path. Maybe phantom functors are join-ed like >=>.

pi :: [a] -> Pi r0 r1 -> [a] Source #

Unsafely project untyped value list.

definePi Source #

Arguments

:: PersistableWidth r1 
=> Int

Index of flat SQL value list

-> Pi r0 r1

Result projection path

Unsafely define projection path from type r0 into type r1. Use inferred PersistableRecordWidth.

defineDirectPi' Source #

Arguments

:: PersistableRecordWidth r1 
-> [Int]

Indexes of flat SQL value list

-> Pi r0 r1

Result projection path

Unsafely define projection path from type r0 into type r1.

defineDirectPi Source #

Arguments

:: PersistableWidth r1 
=> [Int]

Indexes of flat SQL value list

-> Pi r0 r1

Result projection path

Unsafely define projection path from type r0 into type r1. Use inferred PersistableRecordWidth.

unsafeExpandIndexes :: Pi a b -> [Int] Source #

Unsafely untype key to expand indexes.