Module

Selda.Query

Package
purescript-selda
Repository
Kamirus/purescript-selda

#selectFrom Source

selectFrom :: forall res cols s r. FromTable s r cols => Table r -> (Record cols -> Query s (Record res)) -> FullQuery s (Record res)

#selectFrom_ Source

selectFrom_ :: forall reso resi s inner. FromSubQuery s inner resi => FullQuery (Inner s) (Record inner) -> (Record resi -> Query s (Record reso)) -> FullQuery s (Record reso)

#restrict Source

restrict :: forall s. Col s Boolean -> Query s Unit

#notNull Source

notNull :: forall a s. Col s (Maybe a) -> Query s (Col s a)

#crossJoin Source

crossJoin :: forall res r s. FromTable s r res => Table r -> Query s (Record res)

#crossJoin_ Source

crossJoin_ :: forall res s inner. FromSubQuery s inner res => FullQuery (Inner s) (Record inner) -> Query s (Record res)

#aggregate Source

aggregate :: forall res aggr s. HMapWithIndex UnAggr (Record aggr) (Record res) => FullQuery s (Record aggr) -> FullQuery s (Record res)

#groupBy Source

groupBy :: forall a s. Col s a -> Query s (Aggr s a)

#groupBy' Source

groupBy' :: forall s o i. GetCols i => HMap WrapWithAggr (Record i) (Record o) => Record i -> Query s (Record o)

#orderBy Source

orderBy :: forall a s. Order -> Col s a -> Query s Unit

#limit Source

limit :: forall s. Int -> Query s Unit

#leftJoin Source

leftJoin :: forall mres res s r. FromTable s r res => HMap WrapWithMaybe (Record res) (Record mres) => Table r -> (Record res -> Col s Boolean) -> Query s (Record mres)

#leftJoin_ Source

leftJoin_ :: forall inner mres res s. FromSubQuery s inner res => HMap WrapWithMaybe (Record res) (Record mres) => (Record res -> Col s Boolean) -> FullQuery (Inner s) (Record inner) -> Query s (Record mres)

leftJoin_ on q run sub query q; with this execute on to get JOIN constraint; add sub query to sources; return previously mapped record with each value in Col wrapped in Maybe (because LEFT JOIN can return null for each column)

#FromTable Source

class FromTable s t c | s t -> c where

Members

Instances

#WrapWithMaybe Source

data WrapWithMaybe

Constructors

Instances

#subQueryAlias Source

subQueryAlias :: forall s. Query s Alias

#FromSubQuery Source

class FromSubQuery s inner res | s inner -> res where

Members

Instances

#createSubQueryResult Source

createSubQueryResult :: forall o i. HMapWithIndex SubQueryResult (Record i) (Record o) => Alias -> Record i -> Record o

Outside of the subquery, every returned col (in SELECT ...) (no matter if it's just a column of some table or expression or function or ...) is seen as a column of this subquery. So it can just be <subquery alias>.<col alias>.

Creates record of Columns with namespace set as subquery alias and column name as its symbol in record

i ∷ { a ∷ Col s Int , b ∷ Col s String } = { a: lit 1, b: people.name }
createSubQueryResult namespace i
==
({ a: ...{ namespace, name: "a" }, b: ...{ namespace, name: "b" } }
  ∷ { a ∷ Col s Int , b ∷ Col s String })

#SubQueryResult Source

data SubQueryResult

Constructors

Instances