Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:178
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:188
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:219
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:523
Builds a SelectQuery with only filtering applied. Convenience method for when you only need dynamic WHERE conditions.
Parameters
sqlContent
string
Raw SQL string to parse and modify
filter
Filter conditions to apply
Returns
Modified SelectQuery with filter conditions applied
buildSortedQuery()
buildSortedQuery(
sqlContent,sort):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:535
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:545
Parameters
sqlContent
string
paging
Returns
buildSerializedQuery()
buildSerializedQuery(
sqlContent,serialize):SelectQuery
Defined in: packages/core/src/transformers/DynamicQueryBuilder.ts:557
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:569
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