pgCondition
This documentation page is out of date! We've not had time to update it correctly yet, but here's an incredibly quick and poor overview... (Please do send a PR to update this page if you want to help!)
A PgCondition instance is a "modifier" typically acquired from a runtime query
builder via the queryBuilder.whereBuilder()
(for WHERE
clause) or
queryBuilder.havingBuilder()
(for HAVING
clause), or from another
PgCondition instance. It's used to build up complex conditions on a layer by
layer basis, which is useful for "filter" plugins.
A query builder is something that you manipulate at runtime (not plantime) but
you need to register your synchronous callback for it at plantime, e.g. via
$pgSelect.apply($myCb)
where $myCb
is a step representing a callback
function, for example
const $myCb = lambda($foo, (foo) => queryBuilder => { doSomethingWith(queryBuilder, foo) })
.
This "Modifier" class (not a Step) is commonly acquired from
$pgSelect.wherePlan()
, $pgSelect.havingPlan()
, or similar methods. It's
useful for building up a condition (WHERE
or HAVING
clause) bit by bit, and is used at runtime.
This is an advanced class, you probably will never use it unless you're building advanced filtering capabilities into your GraphQL schema.
pgConditions are created with a parent (a PgConditionCapableParent - typically another PgCondition, a PgSelect, or similar) and a mode:
PASS_THRU
- passes conditions directly up to the parentAND
- combines conditions withAND
and passes the result up to the parentOR
- combines the conditions withOR
and passes the result up to the parentNOT
- combines the conditions withAND
, groups them together and does aNOT
of the result, which is then passed up to the parentEXISTS
- builds anEXISTS(...)
expression utilising the conditions and passes it up to the parent
$pgCondition.orPlan()
Returns a child pgCondition in OR
mode.
$pgCondition.andPlan()
Returns a child pgCondition in AND
mode.
$pgCondition.notPlan()
Returns a child pgCondition in NOT
mode.
$pgCondition.existsPlan(options)
Returns a child pgCondition in EXISTS
mode with the given options.
$pgCondition.where(condition)
Adds condition
to the list of conditions. Cannot be used in "having" mode.
$pgCondition.having(condition)
Adds condition
to the list of conditions. Cannot be used unless in "having" mode.
sqlValueWithCodec(value, codec)
Converts value
(arbitrary value) according to the rules of codec
(a
PostgreSQL codec indicating the expected type) and returns an SQL expression
suitable to be embedded in a larger query.