Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:191
DynamicQueryBuilder combines SQL parsing with dynamic condition injection (filters, sorts, paging, JSON serialization).
Key behaviours verified in packages/core/tests/transformers/DynamicQueryBuilder.test.ts:
- Preserves the input SQL when no options are supplied.
- Applies filter, sort, and pagination in a deterministic order.
- Supports JSON serialization for hierarchical projections.
Constructors
Constructor
new DynamicQueryBuilder(
resolverOrOptions?):DynamicQueryBuilder
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:201
Creates a new DynamicQueryBuilder instance. Accepts either the legacy table resolver or an options object that can provide schema metadata.
Parameters
resolverOrOptions?
Optional resolver or configuration object
DynamicQueryBuilderOptions | (tableName) => string[]
Returns
DynamicQueryBuilder
Methods
buildQuery()
buildQuery(
sqlContent,options):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:232
Builds a SelectQuery from SQL content with dynamic conditions. This is a pure function that does not perform any I/O operations.
Parameters
sqlContent
string
Raw SQL string to parse and modify
options
QueryBuildOptions = {}
Dynamic conditions to apply (filter, sort, paging, serialize)
Returns
Modified SelectQuery with all dynamic conditions applied
Example
const builder = new DynamicQueryBuilder();
const query = builder.buildQuery(
'SELECT id, name FROM users WHERE active = true',
{
filter: { status: 'premium' },
sort: { created_at: { desc: true } },
paging: { page: 2, pageSize: 10 },
serialize: { rootName: 'user', rootEntity: { id: 'user', name: 'User', columns: { id: 'id', name: 'name' } }, nestedEntities: [] }
}
);buildFilteredQuery()
buildFilteredQuery(
sqlContent,filter):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:445
Legacy helper for binding existing named parameters without adding new runtime predicates. Dynamic WHERE-condition injection is no longer supported; use SSSQL scaffold/refresh instead.
Parameters
sqlContent
string
Raw SQL string to parse and modify
filter
Named parameters to bind when they already exist in the SQL
Returns
Modified SelectQuery after binding existing named parameters
buildSortedQuery()
buildSortedQuery(
sqlContent,sort):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:457
Builds a SelectQuery with only sorting applied. Convenience method for when you only need dynamic ORDER BY clauses.
Parameters
sqlContent
string
Raw SQL string to parse and modify
sort
Sort conditions to apply
Returns
Modified SelectQuery with sort conditions applied
buildPaginatedQuery()
buildPaginatedQuery(
sqlContent,paging):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:467
Parameters
sqlContent
string
paging
Returns
buildSerializedQuery()
buildSerializedQuery(
sqlContent,serialize):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:479
Builds a SelectQuery with only JSON serialization applied. Convenience method for when you only need hierarchical JSON transformation.
Parameters
sqlContent
string
Raw SQL string to parse and modify
serialize
JSON mapping configuration to apply
Returns
Modified SelectQuery with JSON serialization applied
validateSql()
validateSql(
sqlContent):boolean
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:491
Validates SQL content by attempting to parse it. Useful for testing SQL validity without applying any modifications.
Parameters
sqlContent
string
Raw SQL string to validate
Returns
boolean
true if SQL is valid, throws error if invalid
Throws
Error if SQL cannot be parsed