squeal-postgresql-0.5.2.0: Squeal PostgreSQL Library

Copyright(c) Eitan Chatav 2019
Maintainereitan@morphism.tech
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Squeal.PostgreSQL.Alias

Contents

Description

This module embeds Postgres's alias system in Haskell in a typesafe fashion. Thanks to GHC's OverloadedLabels extension, Squeal can reference aliases by prepending with a #.

Synopsis

Documentation

type (:::) (alias :: Symbol) ty = '(alias, ty) infixr 6 Source #

The alias operator ::: is like a promoted version of As, a type level pair between an alias and some type.

data Alias (alias :: Symbol) Source #

Aliases are proxies for a type level string or Symbol and have an IsLabel instance so that with -XOverloadedLabels

>>> :set -XOverloadedLabels
>>> #foobar :: Alias "foobar"
Alias

Constructors

Alias 
Instances
IsQualified table column (Alias table, Alias column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias table -> Alias column -> (Alias table, Alias column) Source #

alias1 ~ alias2 => IsLabel alias1 (Alias alias2) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Alias alias2 #

(alias0 ~ alias1, alias0 ~ alias2, KnownSymbol alias2) => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased Alias (alias1 ::: alias2) #

aliases ~ (alias ': ([] :: [Symbol])) => IsLabel alias (NP Alias aliases) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: NP Alias aliases #

Eq (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(==) :: Alias alias -> Alias alias -> Bool #

(/=) :: Alias alias -> Alias alias -> Bool #

Ord (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

compare :: Alias alias -> Alias alias -> Ordering #

(<) :: Alias alias -> Alias alias -> Bool #

(<=) :: Alias alias -> Alias alias -> Bool #

(>) :: Alias alias -> Alias alias -> Bool #

(>=) :: Alias alias -> Alias alias -> Bool #

max :: Alias alias -> Alias alias -> Alias alias #

min :: Alias alias -> Alias alias -> Alias alias #

Show (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

showsPrec :: Int -> Alias alias -> ShowS #

show :: Alias alias -> String #

showList :: [Alias alias] -> ShowS #

Generic (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Associated Types

type Rep (Alias alias) :: Type -> Type #

Methods

from :: Alias alias -> Rep (Alias alias) x #

to :: Rep (Alias alias) x -> Alias alias #

NFData (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

rnf :: Alias alias -> () #

KnownSymbol alias => RenderSQL (Alias alias) Source #
>>> printSQL (#jimbob :: Alias "jimbob")
"jimbob"
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

renderSQL :: Alias alias -> ByteString Source #

All KnownSymbol aliases => RenderSQL (NP Alias aliases) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

renderSQL :: NP Alias aliases -> ByteString Source #

type Rep (Alias alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

type Rep (Alias alias) = D1 (MetaData "Alias" "Squeal.PostgreSQL.Alias" "squeal-postgresql-0.5.2.0-4fAomBtpMjd6mRwLthA4w2" False) (C1 (MetaCons "Alias" PrefixI False) (U1 :: Type -> Type))

class IsLabel (x :: Symbol) a where #

Methods

fromLabel :: a #

Instances
alias1 ~ alias2 => IsLabel alias1 (Alias alias2) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Alias alias2 #

(q' ~ "public", a ~ a') => IsLabel a (QualifiedAlias q' a') Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: QualifiedAlias q' a' #

(HasUnique rel rels cols, Has col cols ty, by ~ (,) rel col) => IsLabel col (By rels by) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

fromLabel :: By rels by #

(q ~ "public", a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsLabel a0 (Aliased (QualifiedAlias q) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased (QualifiedAlias q) (a1 ::: a2) #

(alias0 ~ alias1, alias0 ~ alias2, KnownSymbol alias2) => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased Alias (alias1 ::: alias2) #

aliases ~ (alias ': ([] :: [Symbol])) => IsLabel alias (NP Alias aliases) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: NP Alias aliases #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsLabel col (NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, column ~ (col ::: ty)) => IsLabel col (Aliased (Expression outer commons (Grouped bys) schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Aliased (Expression outer commons (Grouped bys) schemas params from) column #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, tys ~ (ty ': ([] :: [NullityType]))) => IsLabel col (NP (Expression outer commons (Grouped bys) schemas params from) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Expression outer commons (Grouped bys) schemas params from) tys #

(HasUnique tab (Join outer from) row, Has col row ty, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsLabel col (NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns #

(HasUnique tab (Join outer from) row, Has col row ty, column ~ (col ::: ty)) => IsLabel col (Aliased (Expression outer commons Ungrouped schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Aliased (Expression outer commons Ungrouped schemas params from) column #

(HasUnique tab (Join outer from) row, Has col row ty, tys ~ (ty ': ([] :: [NullityType]))) => IsLabel col (NP (Expression outer commons Ungrouped schemas params from) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Expression outer commons Ungrouped schemas params from) tys #

(HasUnique rel rels cols, Has col cols ty, bys ~ ((,) rel col ': ([] :: [(Symbol, Symbol)]))) => IsLabel col (NP (By rels) bys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

fromLabel :: NP (By rels) bys #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys) => IsLabel col (Expression outer commons (Grouped bys) schemas params from ty) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Expression outer commons (Grouped bys) schemas params from ty #

(HasUnique tab (Join outer from) row, Has col row ty) => IsLabel col (Expression outer commons Ungrouped schemas params from ty) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Expression outer commons Ungrouped schemas params from ty #

(HasUnique tab (Join outer from) row0, Has col row0 ty, row1 ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)])), GroupedBy tab col bys) => IsLabel col (Selection outer commons (Grouped bys) schemas params from row1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

fromLabel :: Selection outer commons (Grouped bys) schemas params from row1 #

(HasUnique tab (Join outer from) row0, Has col row0 ty, row1 ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsLabel col (Selection outer commons Ungrouped schemas params from row1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

fromLabel :: Selection outer commons Ungrouped schemas params from row1 #

data Aliased expression aliased where Source #

The As operator is used to name an expression. As is like a demoted version of :::.

>>> Just "hello" `As` #hi :: Aliased Maybe ("hi" ::: String)
As (Just "hello") Alias

Constructors

As :: KnownSymbol alias => expression ty -> Alias alias -> Aliased expression (alias ::: ty) 
Instances
(q0 ~ q1, a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsQualified q0 a0 (Aliased (QualifiedAlias q1) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias q0 -> Alias a0 -> Aliased (QualifiedAlias q1) (a1 ::: a2) Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsQualified tab col (NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, column ~ (col ::: ty)) => IsQualified tab col (Aliased (Expression outer commons (Grouped bys) schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Aliased (Expression outer commons (Grouped bys) schemas params from) column Source #

(Has tab (Join outer from) row, Has col row ty, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsQualified tab col (NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns Source #

(Has tab (Join outer from) row, Has col row ty, column ~ (col ::: ty)) => IsQualified tab col (Aliased (Expression outer commons Ungrouped schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Aliased (Expression outer commons Ungrouped schemas params from) column Source #

(KnownSymbol alias, tys ~ ((alias ::: ty) ': ([] :: [(Symbol, k)]))) => Aliasable alias (expression ty) (NP (Aliased expression) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

as :: expression ty -> Alias alias -> NP (Aliased expression) tys Source #

(KnownSymbol alias, aliased ~ (alias ::: ty)) => Aliasable alias (expression ty) (Aliased expression aliased) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

as :: expression ty -> Alias alias -> Aliased expression aliased Source #

(q ~ "public", a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsLabel a0 (Aliased (QualifiedAlias q) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased (QualifiedAlias q) (a1 ::: a2) #

(alias0 ~ alias1, alias0 ~ alias2, KnownSymbol alias2) => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased Alias (alias1 ::: alias2) #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsLabel col (NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns #

(HasUnique tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, column ~ (col ::: ty)) => IsLabel col (Aliased (Expression outer commons (Grouped bys) schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Aliased (Expression outer commons (Grouped bys) schemas params from) column #

(HasUnique tab (Join outer from) row, Has col row ty, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsLabel col (NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns #

(HasUnique tab (Join outer from) row, Has col row ty, column ~ (col ::: ty)) => IsLabel col (Aliased (Expression outer commons Ungrouped schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

fromLabel :: Aliased (Expression outer commons Ungrouped schemas params from) column #

Eq (expression ty) => Eq (Aliased expression (alias ::: ty)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(==) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

(/=) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

Ord (expression ty) => Ord (Aliased expression (alias ::: ty)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

compare :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Ordering #

(<) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

(<=) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

(>) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

(>=) :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Bool #

max :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) #

min :: Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) -> Aliased expression (alias ::: ty) #

Show (expression ty) => Show (Aliased expression (alias ::: ty)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

showsPrec :: Int -> Aliased expression (alias ::: ty) -> ShowS #

show :: Aliased expression (alias ::: ty) -> String #

showList :: [Aliased expression (alias ::: ty)] -> ShowS #

class KnownSymbol alias => Aliasable alias expression aliased | aliased -> expression, aliased -> alias where Source #

The Aliasable class provides a way to scrap your Nils in an NP list of Aliased expressions.

Methods

as :: expression -> Alias alias -> aliased Source #

Instances
(KnownSymbol alias, tys ~ ((alias ::: ty) ': ([] :: [(Symbol, k)]))) => Aliasable alias (expression ty) (NP (Aliased expression) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

as :: expression ty -> Alias alias -> NP (Aliased expression) tys Source #

(KnownSymbol alias, aliased ~ (alias ::: ty)) => Aliasable alias (expression ty) (Aliased expression aliased) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

as :: expression ty -> Alias alias -> Aliased expression aliased Source #

(KnownSymbol cte, commons1 ~ ((cte ::: common) ': commons)) => Aliasable cte (statement commons schemas params common) (AlignedList (CommonTableExpression statement schemas params) commons commons1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

as :: statement commons schemas params common -> Alias cte -> AlignedList (CommonTableExpression statement schemas params) commons commons1 Source #

(KnownSymbol cte, commons1 ~ ((cte ::: common) ': commons)) => Aliasable cte (statement commons schemas params common) (CommonTableExpression statement schemas params commons commons1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

as :: statement commons schemas params common -> Alias cte -> CommonTableExpression statement schemas params commons commons1 Source #

(KnownSymbol col, row ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => Aliasable col (Expression outer commons grp schemas params from ty) (Selection outer commons grp schemas params from row) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

as :: Expression outer commons grp schemas params from ty -> Alias col -> Selection outer commons grp schemas params from row Source #

renderAliased :: (forall ty. expression ty -> ByteString) -> Aliased expression aliased -> ByteString Source #

>>> let renderMaybe = fromString . maybe "Nothing" (const "Just")
>>> renderAliased renderMaybe (Just (3::Int) `As` #an_int)
"Just AS \"an_int\""

class KnownSymbol alias => Has (alias :: Symbol) (fields :: [(Symbol, kind)]) (field :: kind) | alias fields -> field Source #

Has alias fields field is a constraint that proves that fields has a field of alias ::: field, inferring field from alias and fields.

Instances
(KnownSymbol alias, Has alias fields field) => Has alias (field' ': fields :: [(Symbol, kind)]) (field :: kind) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

KnownSymbol alias => Has alias ((alias ::: field) ': fields :: [(Symbol, kind)]) (field :: kind) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

type HasUnique alias fields field = fields ~ '[alias ::: field] Source #

HasUnique alias fields field is a constraint that proves that fields is a singleton of alias ::: field.

class All KnownSymbol aliases => HasAll (aliases :: [Symbol]) (fields :: [(Symbol, kind)]) (subfields :: [(Symbol, kind)]) | aliases fields -> subfields Source #

HasAll extends Has to take lists of aliases and fields and infer a list of subfields.

Instances
HasAll ([] :: [Symbol]) (fields :: [(Symbol, kind)]) ([] :: [(Symbol, kind)]) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

(Has alias fields field, HasAll aliases fields subfields) => HasAll (alias ': aliases) (fields :: [(Symbol, k)]) ((alias ::: field) ': subfields :: [(Symbol, k)]) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

class HasIn fields field Source #

HasIn fields (alias ::: field) is a constraint that proves that fields has a field of alias ::: field. It is used in UPDATEs to choose which subfields to update.

Instances
Has alias fields field => HasIn (fields :: [(Symbol, k)]) (alias ::: field :: (Symbol, k)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

data QualifiedAlias (qualifier :: Symbol) (alias :: Symbol) Source #

QualifiedAliases enables multi-schema support by allowing a reference to a Table, Typedef or View to be qualified by their schemas. By default, a qualifier of public is provided.

>>> :{
let
  alias1 :: QualifiedAlias "sch" "tab"
  alias1 = #sch ! #tab
  alias2 :: QualifiedAlias "public" "vw"
  alias2 = #vw
in printSQL alias1 >> printSQL alias2
:}
"sch"."tab"
"vw"

Constructors

QualifiedAlias 
Instances
(q ~ q', a ~ a') => IsQualified q a (QualifiedAlias q' a') Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias q -> Alias a -> QualifiedAlias q' a' Source #

(q0 ~ q1, a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsQualified q0 a0 (Aliased (QualifiedAlias q1) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias q0 -> Alias a0 -> Aliased (QualifiedAlias q1) (a1 ::: a2) Source #

(q' ~ "public", a ~ a') => IsLabel a (QualifiedAlias q' a') Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: QualifiedAlias q' a' #

(q ~ "public", a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsLabel a0 (Aliased (QualifiedAlias q) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

fromLabel :: Aliased (QualifiedAlias q) (a1 ::: a2) #

Eq (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(==) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

(/=) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

Ord (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

compare :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Ordering #

(<) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

(<=) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

(>) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

(>=) :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> Bool #

max :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias #

min :: QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias -> QualifiedAlias qualifier alias #

Show (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

showsPrec :: Int -> QualifiedAlias qualifier alias -> ShowS #

show :: QualifiedAlias qualifier alias -> String #

showList :: [QualifiedAlias qualifier alias] -> ShowS #

Generic (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Associated Types

type Rep (QualifiedAlias qualifier alias) :: Type -> Type #

Methods

from :: QualifiedAlias qualifier alias -> Rep (QualifiedAlias qualifier alias) x #

to :: Rep (QualifiedAlias qualifier alias) x -> QualifiedAlias qualifier alias #

NFData (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

rnf :: QualifiedAlias qualifier alias -> () #

(KnownSymbol q, KnownSymbol a) => RenderSQL (QualifiedAlias q a) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

type Rep (QualifiedAlias qualifier alias) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

type Rep (QualifiedAlias qualifier alias) = D1 (MetaData "QualifiedAlias" "Squeal.PostgreSQL.Alias" "squeal-postgresql-0.5.2.0-4fAomBtpMjd6mRwLthA4w2" False) (C1 (MetaCons "QualifiedAlias" PrefixI False) (U1 :: Type -> Type))

class IsQualified table column expression where Source #

Analagous to IsLabel, the constraint IsQualified defines ! for a column alias qualified by a table alias.

Methods

(!) :: Alias table -> Alias column -> expression infixl 9 Source #

Instances
(q ~ q', a ~ a') => IsQualified q a (QualifiedAlias q' a') Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias q -> Alias a -> QualifiedAlias q' a' Source #

IsQualified table column (Alias table, Alias column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias table -> Alias column -> (Alias table, Alias column) Source #

(Has rel rels cols, Has col cols ty, by ~ (,) rel col) => IsQualified rel col (By rels by) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

(!) :: Alias rel -> Alias col -> By rels by Source #

(q0 ~ q1, a0 ~ a1, a1 ~ a2, KnownSymbol a2) => IsQualified q0 a0 (Aliased (QualifiedAlias q1) (a1 ::: a2)) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

Methods

(!) :: Alias q0 -> Alias a0 -> Aliased (QualifiedAlias q1) (a1 ::: a2) Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsQualified tab col (NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Aliased (Expression outer commons (Grouped bys) schemas params from)) columns Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, column ~ (col ::: ty)) => IsQualified tab col (Aliased (Expression outer commons (Grouped bys) schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Aliased (Expression outer commons (Grouped bys) schemas params from) column Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys, tys ~ (ty ': ([] :: [NullityType]))) => IsQualified tab col (NP (Expression outer commons (Grouped bys) schemas params from) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Expression outer commons (Grouped bys) schemas params from) tys Source #

(Has tab (Join outer from) row, Has col row ty, columns ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsQualified tab col (NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Aliased (Expression outer commons Ungrouped schemas params from)) columns Source #

(Has tab (Join outer from) row, Has col row ty, column ~ (col ::: ty)) => IsQualified tab col (Aliased (Expression outer commons Ungrouped schemas params from) column) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Aliased (Expression outer commons Ungrouped schemas params from) column Source #

(Has tab (Join outer from) row, Has col row ty, tys ~ (ty ': ([] :: [NullityType]))) => IsQualified tab col (NP (Expression outer commons Ungrouped schemas params from) tys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> NP (Expression outer commons Ungrouped schemas params from) tys Source #

(Has rel rels cols, Has col cols ty, bys ~ ((,) rel col ': ([] :: [(Symbol, Symbol)]))) => IsQualified rel col (NP (By rels) bys) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

(!) :: Alias rel -> Alias col -> NP (By rels) bys Source #

(Has tab (Join outer from) row, Has col row ty, GroupedBy tab col bys) => IsQualified tab col (Expression outer commons (Grouped bys) schemas params from ty) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Expression outer commons (Grouped bys) schemas params from ty Source #

(Has tab (Join outer from) row, Has col row ty) => IsQualified tab col (Expression outer commons Ungrouped schemas params from ty) Source # 
Instance details

Defined in Squeal.PostgreSQL.Expression

Methods

(!) :: Alias tab -> Alias col -> Expression outer commons Ungrouped schemas params from ty Source #

(Has tab (Join outer from) row0, Has col row0 ty, row1 ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)])), GroupedBy tab col bys) => IsQualified tab col (Selection outer commons (Grouped bys) schemas params from row1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

(!) :: Alias tab -> Alias col -> Selection outer commons (Grouped bys) schemas params from row1 Source #

(Has tab (Join outer from) row0, Has col row0 ty, row1 ~ ((col ::: ty) ': ([] :: [(Symbol, NullityType)]))) => IsQualified tab col (Selection outer commons Ungrouped schemas params from row1) Source # 
Instance details

Defined in Squeal.PostgreSQL.Query

Methods

(!) :: Alias tab -> Alias col -> Selection outer commons Ungrouped schemas params from row1 Source #

Grouping

data Grouping Source #

Grouping is an auxiliary namespace, created by GROUP BY clauses (group), and used for typesafe aggregation

Constructors

Ungrouped

no aggregation permitted

Grouped [(Symbol, Symbol)]

aggregation required for any column which is not grouped

class (KnownSymbol table, KnownSymbol column) => GroupedBy table column bys Source #

A GroupedBy constraint indicates that a table qualified column is a member of the auxiliary namespace created by GROUP BY clauses and thus, may be called in an output Expression without aggregating.

Instances
(KnownSymbol table, KnownSymbol column) => GroupedBy table column ((,) table column ': bys :: [(Symbol, Symbol)]) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias

(KnownSymbol table, KnownSymbol column, GroupedBy table column bys) => GroupedBy table column (tabcol ': bys :: [a]) Source # 
Instance details

Defined in Squeal.PostgreSQL.Alias