rawsql-ts 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +4 -4
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/transformers/DynamicQueryBuilder.d.ts +9 -13
- package/dist/esm/transformers/DynamicQueryBuilder.js +8 -108
- package/dist/esm/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/esm/transformers/PruneOptionalConditionBranches.d.ts +14 -2
- package/dist/esm/transformers/PruneOptionalConditionBranches.js +105 -37
- package/dist/esm/transformers/PruneOptionalConditionBranches.js.map +1 -1
- package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +30 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.js +253 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -0
- package/dist/esm/utils/RelationGraph.d.ts +43 -0
- package/dist/esm/utils/RelationGraph.js +117 -0
- package/dist/esm/utils/RelationGraph.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +4 -4
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +4 -0
- package/dist/src/transformers/DynamicQueryBuilder.d.ts +9 -13
- package/dist/src/transformers/PruneOptionalConditionBranches.d.ts +14 -2
- package/dist/src/transformers/SSSQLFilterBuilder.d.ts +30 -0
- package/dist/src/utils/RelationGraph.d.ts +43 -0
- package/dist/transformers/DynamicQueryBuilder.js +8 -97
- package/dist/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/transformers/PruneOptionalConditionBranches.js +106 -37
- package/dist/transformers/PruneOptionalConditionBranches.js.map +1 -1
- package/dist/transformers/SSSQLFilterBuilder.js +259 -0
- package/dist/transformers/SSSQLFilterBuilder.js.map +1 -0
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/utils/RelationGraph.js +123 -0
- package/dist/utils/RelationGraph.js.map +1 -0
- package/package.json +64 -65
package/dist/src/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export { DuplicateDetectionMode } from './transformers/SelectableColumnCollector
|
|
|
70
70
|
export * from './transformers/FilterableItemCollector';
|
|
71
71
|
export { FixtureCteBuilder, FixtureTableDefinition, FixtureColumnDefinition } from './transformers/FixtureCteBuilder';
|
|
72
72
|
export * from './transformers/DynamicQueryBuilder';
|
|
73
|
+
export * from './transformers/SSSQLFilterBuilder';
|
|
73
74
|
export * from './transformers/PruneOptionalConditionBranches';
|
|
74
75
|
export { SchemaInfo, optimizeUnusedLeftJoins, optimizeUnusedLeftJoinsToFixedPoint, optimizeUnusedCtes, optimizeUnusedCtesToFixedPoint } from './transformers/OptimizeUnusedLeftJoins';
|
|
75
76
|
export * from './transformers/TableColumnResolver';
|
|
@@ -93,9 +94,12 @@ export * from './transformers/SqlParamInjector';
|
|
|
93
94
|
export * from './transformers/SqlSortInjector';
|
|
94
95
|
export * from './transformers/SqlPaginationInjector';
|
|
95
96
|
export * from './transformers/DynamicQueryBuilder';
|
|
97
|
+
export * from './utils/ParameterHelper';
|
|
98
|
+
export * from './transformers/SqlParameterBinder';
|
|
96
99
|
export * from './utils/SqlSchemaValidator';
|
|
97
100
|
export * from './utils/JsonSchemaValidator';
|
|
98
101
|
export * from './utils/SchemaManager';
|
|
102
|
+
export * from './utils/RelationGraph';
|
|
99
103
|
export * from './utils/CommentEditor';
|
|
100
104
|
export * from './utils/LexemeCursor';
|
|
101
105
|
export type { LineColumn } from './utils/LexemeCursor';
|
|
@@ -3,9 +3,9 @@ import { SortConditions } from "./SqlSortInjector";
|
|
|
3
3
|
import { PaginationOptions } from "./SqlPaginationInjector";
|
|
4
4
|
import { JsonMapping } from "./PostgresJsonQueryBuilder";
|
|
5
5
|
import { SqlParameterValue } from "../models/ValueComponent";
|
|
6
|
-
import { type ExistsSubqueryDefinition } from "./ExistsPredicateInjector";
|
|
7
6
|
import { SchemaInfo } from "./OptimizeUnusedLeftJoins";
|
|
8
7
|
import { OptionalConditionParameterStates, OptionalConditionPruningParameters } from "./PruneOptionalConditionBranches";
|
|
8
|
+
import type { ExistsSubqueryDefinition } from "./ExistsPredicateInjector";
|
|
9
9
|
export type { ExistsSubqueryDefinition };
|
|
10
10
|
/**
|
|
11
11
|
* Object-form filter condition supporting scalar operators, logical grouping,
|
|
@@ -85,7 +85,10 @@ export type FilterConditions = Record<string, FilterConditionValue>;
|
|
|
85
85
|
* Options for dynamic query building
|
|
86
86
|
*/
|
|
87
87
|
export interface QueryBuildOptions {
|
|
88
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Legacy filter input for named-parameter binding only.
|
|
90
|
+
* Dynamic predicate injection is no longer supported and will fail fast.
|
|
91
|
+
*/
|
|
89
92
|
filter?: FilterConditions;
|
|
90
93
|
/** Sort conditions to inject into ORDER BY clause */
|
|
91
94
|
sort?: SortConditions;
|
|
@@ -194,24 +197,17 @@ export declare class DynamicQueryBuilder {
|
|
|
194
197
|
*/
|
|
195
198
|
buildQuery(sqlContent: string, options?: QueryBuildOptions): SelectQuery;
|
|
196
199
|
private resolveOptionalConditionPruningParameters;
|
|
197
|
-
private extractExistsInstructions;
|
|
198
|
-
private handleMultiAnchorDefinitions;
|
|
199
|
-
private splitExistsProperties;
|
|
200
|
-
private isFilterConditionObject;
|
|
201
|
-
private isMultiColumnDefinitionArray;
|
|
202
|
-
private isMultiColumnDefinition;
|
|
203
|
-
private createExistsInstruction;
|
|
204
200
|
private applyColumnFilters;
|
|
205
201
|
private normalizeColumnList;
|
|
206
202
|
private normalizeColumnIdentifier;
|
|
207
203
|
private getSelectItemName;
|
|
208
204
|
/**
|
|
209
|
-
*
|
|
210
|
-
*
|
|
205
|
+
* Legacy helper for binding existing named parameters without adding new runtime predicates.
|
|
206
|
+
* Dynamic WHERE-condition injection is no longer supported; use SSSQL scaffold/refresh instead.
|
|
211
207
|
*
|
|
212
208
|
* @param sqlContent Raw SQL string to parse and modify
|
|
213
|
-
* @param filter
|
|
214
|
-
* @returns Modified SelectQuery
|
|
209
|
+
* @param filter Named parameters to bind when they already exist in the SQL
|
|
210
|
+
* @returns Modified SelectQuery after binding existing named parameters
|
|
215
211
|
*/
|
|
216
212
|
buildFilteredQuery(sqlContent: string, filter: FilterConditions): SelectQuery;
|
|
217
213
|
/**
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { SelectQuery } from '../models/SelectQuery';
|
|
2
|
-
import { SqlParameterValue } from '../models/ValueComponent';
|
|
1
|
+
import { SelectQuery, SimpleSelectQuery } from '../models/SelectQuery';
|
|
2
|
+
import { SqlParameterValue, ValueComponent } from '../models/ValueComponent';
|
|
3
3
|
export type OptionalConditionPruningParameters = Record<string, SqlParameterValue>;
|
|
4
4
|
export type OptionalConditionParameterState = 'absent' | 'present' | 'unknown';
|
|
5
5
|
export type OptionalConditionParameterStates = Record<string, OptionalConditionParameterState>;
|
|
6
|
+
export type SupportedOptionalConditionBranchKind = 'expression';
|
|
7
|
+
export interface SupportedOptionalConditionBranch {
|
|
8
|
+
query: SimpleSelectQuery;
|
|
9
|
+
parameterName: string;
|
|
10
|
+
expression: ValueComponent;
|
|
11
|
+
kind: SupportedOptionalConditionBranchKind;
|
|
12
|
+
}
|
|
6
13
|
/**
|
|
7
14
|
* Prunes supported optional WHERE branches when an explicitly targeted parameter is absent-equivalent.
|
|
8
15
|
* For the MVP, only `null` and `undefined` are treated as absent and unsupported shapes remain exact no-op.
|
|
9
16
|
*/
|
|
10
17
|
export declare const pruneOptionalConditionBranches: (query: SelectQuery, pruningParameters: OptionalConditionPruningParameters) => SelectQuery;
|
|
18
|
+
/**
|
|
19
|
+
* Collects supported top-level optional condition branches from the query graph.
|
|
20
|
+
* The returned branch expressions keep object identity so callers can move them without re-rendering.
|
|
21
|
+
*/
|
|
22
|
+
export declare const collectSupportedOptionalConditionBranches: (query: SelectQuery) => SupportedOptionalConditionBranch[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SelectQuery } from "../models/SelectQuery";
|
|
2
|
+
import { type SupportedOptionalConditionBranch } from "./PruneOptionalConditionBranches";
|
|
3
|
+
export type SSSQLFilterValue = unknown;
|
|
4
|
+
export type SSSQLFilterInput = Record<string, SSSQLFilterValue>;
|
|
5
|
+
export type SssqlScaffoldFilters = SSSQLFilterInput;
|
|
6
|
+
export interface SssqlTransformResult {
|
|
7
|
+
query: SelectQuery;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Builds and refreshes truthful SSSQL optional filter branches.
|
|
11
|
+
* Runtime callers should use pruning, not dynamic predicate injection.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SSSQLFilterBuilder {
|
|
14
|
+
private readonly tableColumnResolver?;
|
|
15
|
+
private readonly finder;
|
|
16
|
+
constructor(tableColumnResolver?: ((tableName: string) => string[]) | undefined);
|
|
17
|
+
scaffold(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
|
|
18
|
+
refresh(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
|
|
19
|
+
private parseQuery;
|
|
20
|
+
private resolveTarget;
|
|
21
|
+
private resolveTargetInQuery;
|
|
22
|
+
private resolveQualifiedTarget;
|
|
23
|
+
private resolveUnqualifiedTarget;
|
|
24
|
+
private findAliasForTable;
|
|
25
|
+
private resolveAliasForSource;
|
|
26
|
+
private rebaseMovedBranch;
|
|
27
|
+
}
|
|
28
|
+
export type { SupportedOptionalConditionBranch };
|
|
29
|
+
export declare const scaffoldSssqlQuery: (sqlContent: string, filters: SssqlScaffoldFilters) => SssqlTransformResult;
|
|
30
|
+
export declare const refreshSssqlQuery: (sqlContent: string, filters: SssqlScaffoldFilters) => SssqlTransformResult;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CreateTableQuery } from '../models/CreateTableQuery';
|
|
2
|
+
import { QualifiedName } from '../models/ValueComponent';
|
|
3
|
+
export type RelationConstraintKind = 'column-reference' | 'table-foreign-key';
|
|
4
|
+
export type RelationEvidenceKind = RelationConstraintKind | 'primary-key' | 'unique-key';
|
|
5
|
+
export type RelationConfidence = 'confirmed' | 'inferred' | 'unknown';
|
|
6
|
+
export interface RelationGraphEdge {
|
|
7
|
+
childTable: string;
|
|
8
|
+
parentTable: string;
|
|
9
|
+
childColumns: string[];
|
|
10
|
+
parentColumns: string[];
|
|
11
|
+
constraintKind: RelationConstraintKind;
|
|
12
|
+
constraintName: string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Evidence behind the relation edge. v1 uses FK evidence, but callers can
|
|
15
|
+
* keep the same edge shape when PK / UNIQUE inference is added later.
|
|
16
|
+
*/
|
|
17
|
+
evidenceKind: RelationEvidenceKind;
|
|
18
|
+
/**
|
|
19
|
+
* Indicates whether the relation is directly confirmed or inferred from
|
|
20
|
+
* broader schema evidence.
|
|
21
|
+
*/
|
|
22
|
+
confidence: RelationConfidence;
|
|
23
|
+
isSelfReference: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface RelationGraph {
|
|
26
|
+
relations: RelationGraphEdge[];
|
|
27
|
+
byChildTable: Map<string, RelationGraphEdge[]>;
|
|
28
|
+
byParentTable: Map<string, RelationGraphEdge[]>;
|
|
29
|
+
tableNames: Set<string>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build a direction-aware relation graph from parsed CREATE TABLE statements.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildRelationGraphFromCreateTableQueries(queries: CreateTableQuery[]): RelationGraph;
|
|
35
|
+
/**
|
|
36
|
+
* Return the known parent relations for a child table.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getOutgoingRelations(graph: RelationGraph, childTable: string): RelationGraphEdge[];
|
|
39
|
+
/**
|
|
40
|
+
* Return the known child relations for a parent table.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getIncomingRelations(graph: RelationGraph, parentTable: string): RelationGraphEdge[];
|
|
43
|
+
export declare function getQualifiedNameText(value: QualifiedName): string;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DynamicQueryBuilder = void 0;
|
|
4
4
|
const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
|
|
5
|
-
const SqlParamInjector_1 = require("./SqlParamInjector");
|
|
6
5
|
const SqlSortInjector_1 = require("./SqlSortInjector");
|
|
7
6
|
const SqlPaginationInjector_1 = require("./SqlPaginationInjector");
|
|
8
7
|
const PostgresJsonQueryBuilder_1 = require("./PostgresJsonQueryBuilder");
|
|
@@ -10,7 +9,6 @@ const QueryBuilder_1 = require("./QueryBuilder");
|
|
|
10
9
|
const SqlParameterBinder_1 = require("./SqlParameterBinder");
|
|
11
10
|
const ParameterDetector_1 = require("../utils/ParameterDetector");
|
|
12
11
|
const ValueComponent_1 = require("../models/ValueComponent");
|
|
13
|
-
const ExistsPredicateInjector_1 = require("./ExistsPredicateInjector");
|
|
14
12
|
const OptimizeUnusedLeftJoins_1 = require("./OptimizeUnusedLeftJoins");
|
|
15
13
|
const PruneOptionalConditionBranches_1 = require("./PruneOptionalConditionBranches");
|
|
16
14
|
/**
|
|
@@ -69,7 +67,7 @@ class DynamicQueryBuilder {
|
|
|
69
67
|
}
|
|
70
68
|
// Apply dynamic modifications in the correct order
|
|
71
69
|
let modifiedQuery = parsedQuery;
|
|
72
|
-
// 1. Bind
|
|
70
|
+
// 1. Bind existing named parameters, but fail fast for legacy runtime filter assembly.
|
|
73
71
|
if (options.filter && Object.keys(options.filter).length > 0) {
|
|
74
72
|
const { hardcodedParams, dynamicFilters } = ParameterDetector_1.ParameterDetector.separateFilters(modifiedQuery, options.filter);
|
|
75
73
|
// Bind hardcoded parameters if any exist
|
|
@@ -77,19 +75,9 @@ class DynamicQueryBuilder {
|
|
|
77
75
|
const parameterBinder = new SqlParameterBinder_1.SqlParameterBinder({ requireAllParameters: false });
|
|
78
76
|
modifiedQuery = parameterBinder.bind(modifiedQuery, hardcodedParams);
|
|
79
77
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const paramInjector = new SqlParamInjector_1.SqlParamInjector(this.tableColumnResolver);
|
|
84
|
-
// Ensure we have a SimpleSelectQuery for the injector
|
|
85
|
-
const simpleQuery = QueryBuilder_1.QueryBuilder.buildSimpleQuery(modifiedQuery);
|
|
86
|
-
modifiedQuery = paramInjector.inject(simpleQuery, cleanedFilters);
|
|
87
|
-
}
|
|
88
|
-
if (existsInstructions.length > 0) {
|
|
89
|
-
modifiedQuery = (0, ExistsPredicateInjector_1.injectExistsPredicates)(modifiedQuery, existsInstructions, {
|
|
90
|
-
tableColumnResolver: this.tableColumnResolver,
|
|
91
|
-
strict: !!options.existsStrict
|
|
92
|
-
});
|
|
78
|
+
const hasLegacyDynamicFilters = Object.keys(dynamicFilters).length > 0;
|
|
79
|
+
if (hasLegacyDynamicFilters) {
|
|
80
|
+
throw new Error("DynamicQueryBuilder no longer injects runtime filter predicates. Use `ztd query sssql scaffold` to author optional filters, `ztd query sssql refresh` to refresh them, and `optionalConditionParameters` at runtime for pruning only.");
|
|
93
81
|
}
|
|
94
82
|
}
|
|
95
83
|
// 2. Apply sorting second (after filtering to sort smaller dataset)
|
|
@@ -152,83 +140,6 @@ class DynamicQueryBuilder {
|
|
|
152
140
|
}
|
|
153
141
|
return legacyParameters;
|
|
154
142
|
}
|
|
155
|
-
extractExistsInstructions(filters) {
|
|
156
|
-
const cleanedFilters = {};
|
|
157
|
-
const instructions = [];
|
|
158
|
-
for (const [key, value] of Object.entries(filters)) {
|
|
159
|
-
if (key === "$exists" || key === "$notExists") {
|
|
160
|
-
// Multi-anchor metadata arrives as arrays keyed by the special markers.
|
|
161
|
-
if (!this.isMultiColumnDefinitionArray(value)) {
|
|
162
|
-
throw new Error(`'${key}' must be an array of EXISTS definitions.`);
|
|
163
|
-
}
|
|
164
|
-
this.handleMultiAnchorDefinitions(key, value, instructions);
|
|
165
|
-
continue;
|
|
166
|
-
}
|
|
167
|
-
if (this.isFilterConditionObject(value)) {
|
|
168
|
-
const { leftover, exists, notExists } = this.splitExistsProperties(value);
|
|
169
|
-
if (exists) {
|
|
170
|
-
instructions.push(this.createExistsInstruction([key], exists, "exists"));
|
|
171
|
-
}
|
|
172
|
-
if (notExists) {
|
|
173
|
-
instructions.push(this.createExistsInstruction([key], notExists, "notExists"));
|
|
174
|
-
}
|
|
175
|
-
if (leftover) {
|
|
176
|
-
cleanedFilters[key] = leftover;
|
|
177
|
-
}
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
if (this.isMultiColumnDefinitionArray(value)) {
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
cleanedFilters[key] = value;
|
|
184
|
-
}
|
|
185
|
-
return { filters: cleanedFilters, instructions };
|
|
186
|
-
}
|
|
187
|
-
handleMultiAnchorDefinitions(key, definitions, instructions) {
|
|
188
|
-
// Build instructions for each multi-anchor definition in the batch.
|
|
189
|
-
for (const definition of definitions) {
|
|
190
|
-
if (!definition.on || definition.on.length === 0) {
|
|
191
|
-
throw new Error(`Every ${key} instruction must specify an "on" array.`);
|
|
192
|
-
}
|
|
193
|
-
instructions.push(this.createExistsInstruction(definition.on, definition, key === "$notExists" ? "notExists" : "exists"));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
splitExistsProperties(value) {
|
|
197
|
-
const { exists, notExists, ...rest } = value;
|
|
198
|
-
const hasRemaining = Object.keys(rest).length > 0;
|
|
199
|
-
return {
|
|
200
|
-
leftover: hasRemaining ? rest : undefined,
|
|
201
|
-
exists: exists,
|
|
202
|
-
notExists: notExists
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
isFilterConditionObject(value) {
|
|
206
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
207
|
-
}
|
|
208
|
-
isMultiColumnDefinitionArray(value) {
|
|
209
|
-
return Array.isArray(value) && value.every(entry => this.isMultiColumnDefinition(entry));
|
|
210
|
-
}
|
|
211
|
-
isMultiColumnDefinition(value) {
|
|
212
|
-
if (!value || typeof value !== "object") {
|
|
213
|
-
return false;
|
|
214
|
-
}
|
|
215
|
-
const candidate = value;
|
|
216
|
-
return (Array.isArray(candidate.on) &&
|
|
217
|
-
candidate.on.length > 0 &&
|
|
218
|
-
candidate.on.every(column => typeof column === "string") &&
|
|
219
|
-
typeof candidate.sql === "string");
|
|
220
|
-
}
|
|
221
|
-
createExistsInstruction(anchors, definition, mode) {
|
|
222
|
-
if (!definition.sql || typeof definition.sql !== "string") {
|
|
223
|
-
throw new Error("EXISTS definition must include a SQL string.");
|
|
224
|
-
}
|
|
225
|
-
return {
|
|
226
|
-
mode,
|
|
227
|
-
anchorColumns: anchors,
|
|
228
|
-
sql: definition.sql,
|
|
229
|
-
params: definition.params
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
143
|
applyColumnFilters(query, options) {
|
|
233
144
|
const hasIncludeFilters = Array.isArray(options.includeColumns) && options.includeColumns.length > 0;
|
|
234
145
|
const hasExcludeFilters = Array.isArray(options.excludeColumns) && options.excludeColumns.length > 0;
|
|
@@ -317,12 +228,12 @@ class DynamicQueryBuilder {
|
|
|
317
228
|
return null;
|
|
318
229
|
}
|
|
319
230
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
231
|
+
* Legacy helper for binding existing named parameters without adding new runtime predicates.
|
|
232
|
+
* Dynamic WHERE-condition injection is no longer supported; use SSSQL scaffold/refresh instead.
|
|
322
233
|
*
|
|
323
234
|
* @param sqlContent Raw SQL string to parse and modify
|
|
324
|
-
* @param filter
|
|
325
|
-
* @returns Modified SelectQuery
|
|
235
|
+
* @param filter Named parameters to bind when they already exist in the SQL
|
|
236
|
+
* @returns Modified SelectQuery after binding existing named parameters
|
|
326
237
|
*/
|
|
327
238
|
buildFilteredQuery(sqlContent, filter) {
|
|
328
239
|
return this.buildQuery(sqlContent, { filter });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicQueryBuilder.js","sourceRoot":"","sources":["../../src/transformers/DynamicQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DynamicQueryBuilder.js","sourceRoot":"","sources":["../../src/transformers/DynamicQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pruneOptionalConditionBranches = void 0;
|
|
3
|
+
exports.collectSupportedOptionalConditionBranches = exports.pruneOptionalConditionBranches = void 0;
|
|
4
4
|
const Clause_1 = require("../models/Clause");
|
|
5
5
|
const SelectQuery_1 = require("../models/SelectQuery");
|
|
6
6
|
const ValueComponent_1 = require("../models/ValueComponent");
|
|
7
7
|
const ParameterCollector_1 = require("./ParameterCollector");
|
|
8
|
-
const SUPPORTED_COMPARISON_OPERATORS = new Set(['=', '<>', '!=', '>', '>=', '<', '<=']);
|
|
9
8
|
const isBinaryOperator = (expression, operator) => {
|
|
10
9
|
return expression instanceof ValueComponent_1.BinaryExpression && expression.operator.value.trim().toLowerCase() === operator;
|
|
11
10
|
};
|
|
@@ -27,6 +26,16 @@ const collectTopLevelAndTerms = (expression) => {
|
|
|
27
26
|
...collectTopLevelAndTerms(candidate.right)
|
|
28
27
|
];
|
|
29
28
|
};
|
|
29
|
+
const collectTopLevelOrTerms = (expression) => {
|
|
30
|
+
const candidate = unwrapSingleOuterParen(expression);
|
|
31
|
+
if (!isBinaryOperator(candidate, 'or')) {
|
|
32
|
+
return [expression];
|
|
33
|
+
}
|
|
34
|
+
return [
|
|
35
|
+
...collectTopLevelOrTerms(candidate.left),
|
|
36
|
+
...collectTopLevelOrTerms(candidate.right)
|
|
37
|
+
];
|
|
38
|
+
};
|
|
30
39
|
const isNullLiteral = (expression) => {
|
|
31
40
|
return ((expression instanceof ValueComponent_1.LiteralValue && expression.value === null) ||
|
|
32
41
|
(expression instanceof ValueComponent_1.RawString && expression.value.trim().toLowerCase() === 'null'));
|
|
@@ -57,32 +66,17 @@ const getGuardedParameterName = (expression) => {
|
|
|
57
66
|
const getUniqueParameterNames = (expression) => {
|
|
58
67
|
return new Set(ParameterCollector_1.ParameterCollector.collect(expression).map(parameter => parameter.name.value));
|
|
59
68
|
};
|
|
60
|
-
const
|
|
61
|
-
const candidate = unwrapSingleOuterParen(expression);
|
|
62
|
-
if (!(candidate instanceof ValueComponent_1.BinaryExpression)) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
const operator = candidate.operator.value.trim().toLowerCase();
|
|
66
|
-
if (!SUPPORTED_COMPARISON_OPERATORS.has(operator)) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
const leftIsTargetParameter = candidate.left instanceof ValueComponent_1.ParameterExpression && candidate.left.name.value === parameterName;
|
|
70
|
-
const rightIsTargetParameter = candidate.right instanceof ValueComponent_1.ParameterExpression && candidate.right.name.value === parameterName;
|
|
71
|
-
if (leftIsTargetParameter === rightIsTargetParameter) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
return getUniqueParameterNames(candidate).size === 1;
|
|
75
|
-
};
|
|
76
|
-
const isSupportedExistsPredicate = (expression, parameterName) => {
|
|
69
|
+
const isSupportedMeaningfulBranch = (expression, parameterName) => {
|
|
77
70
|
const candidate = unwrapSingleOuterParen(expression);
|
|
78
|
-
if (
|
|
71
|
+
if (candidate instanceof ValueComponent_1.ParameterExpression) {
|
|
79
72
|
return false;
|
|
80
73
|
}
|
|
81
|
-
|
|
74
|
+
const parameterNames = getUniqueParameterNames(candidate);
|
|
75
|
+
if (parameterNames.size !== 1 || !parameterNames.has(parameterName)) {
|
|
82
76
|
return false;
|
|
83
77
|
}
|
|
84
|
-
|
|
85
|
-
return
|
|
78
|
+
// Keep the matcher conservative enough to avoid pruning tautologies or half-authored branches.
|
|
79
|
+
return !(candidate instanceof ValueComponent_1.LiteralValue || candidate instanceof ValueComponent_1.RawString);
|
|
86
80
|
};
|
|
87
81
|
const isExplicitPruningTarget = (pruningParameters, parameterName) => {
|
|
88
82
|
return Object.prototype.hasOwnProperty.call(pruningParameters, parameterName);
|
|
@@ -95,20 +89,8 @@ const isKnownAbsentTarget = (pruningParameters, parameterName) => {
|
|
|
95
89
|
return parameterValue === null || parameterValue === undefined;
|
|
96
90
|
};
|
|
97
91
|
const shouldPruneOptionalBranch = (expression, pruningParameters) => {
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
const parameterName = getGuardedParameterName(candidate.left);
|
|
103
|
-
if (!parameterName) {
|
|
104
|
-
return false;
|
|
105
|
-
}
|
|
106
|
-
const supportedMeaningfulBranch = isSupportedScalarPredicate(candidate.right, parameterName) ||
|
|
107
|
-
isSupportedExistsPredicate(candidate.right, parameterName);
|
|
108
|
-
if (!supportedMeaningfulBranch) {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
return isKnownAbsentTarget(pruningParameters, parameterName);
|
|
92
|
+
const branch = getSupportedOptionalConditionBranch(expression);
|
|
93
|
+
return branch !== null && isKnownAbsentTarget(pruningParameters, branch.parameterName);
|
|
112
94
|
};
|
|
113
95
|
const rebuildAndCondition = (terms) => {
|
|
114
96
|
if (terms.length === 0) {
|
|
@@ -186,6 +168,83 @@ const traverseSelectQuery = (query, pruningParameters) => {
|
|
|
186
168
|
}
|
|
187
169
|
return false;
|
|
188
170
|
};
|
|
171
|
+
const getSupportedOptionalConditionBranch = (expression) => {
|
|
172
|
+
const orTerms = collectTopLevelOrTerms(expression);
|
|
173
|
+
if (orTerms.length < 2) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const guardTerms = orTerms
|
|
177
|
+
.map(term => ({ term, parameterName: getGuardedParameterName(term) }))
|
|
178
|
+
.filter((candidate) => candidate.parameterName !== null);
|
|
179
|
+
if (guardTerms.length !== 1) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
const [{ term: guardTerm, parameterName }] = guardTerms;
|
|
183
|
+
const meaningfulTerms = orTerms.filter(term => term !== guardTerm);
|
|
184
|
+
if (meaningfulTerms.length === 0) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
if (!meaningfulTerms.every(term => isSupportedMeaningfulBranch(term, parameterName))) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
parameterName,
|
|
192
|
+
kind: 'expression'
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
const collectSupportedBranchesFromSimpleQuery = (query, branches) => {
|
|
196
|
+
if (!query.whereClause) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const topLevelTerms = collectTopLevelAndTerms(query.whereClause.condition);
|
|
200
|
+
for (const term of topLevelTerms) {
|
|
201
|
+
const branch = getSupportedOptionalConditionBranch(term);
|
|
202
|
+
if (!branch) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
branches.push({
|
|
206
|
+
query,
|
|
207
|
+
parameterName: branch.parameterName,
|
|
208
|
+
expression: term,
|
|
209
|
+
kind: branch.kind
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
const collectSupportedBranchesFromSelectQuery = (query, branches) => {
|
|
214
|
+
if (query instanceof SelectQuery_1.SimpleSelectQuery) {
|
|
215
|
+
collectSupportedBranchesFromSimpleQuery(query, branches);
|
|
216
|
+
traverseNestedSelectQueriesForCollection(query, branches);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (query instanceof SelectQuery_1.BinarySelectQuery) {
|
|
220
|
+
collectSupportedBranchesFromSelectQuery(query.left, branches);
|
|
221
|
+
collectSupportedBranchesFromSelectQuery(query.right, branches);
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
const traverseNestedSelectQueriesForCollection = (root, branches) => {
|
|
225
|
+
const visited = new WeakSet();
|
|
226
|
+
const walk = (value) => {
|
|
227
|
+
if (!value || typeof value !== 'object') {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (visited.has(value)) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
visited.add(value);
|
|
234
|
+
if (value !== root && isSelectQueryNode(value)) {
|
|
235
|
+
collectSupportedBranchesFromSelectQuery(value, branches);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (Array.isArray(value)) {
|
|
239
|
+
value.forEach(walk);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
for (const child of Object.values(value)) {
|
|
243
|
+
walk(child);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
walk(root);
|
|
247
|
+
};
|
|
189
248
|
/**
|
|
190
249
|
* Prunes supported optional WHERE branches when an explicitly targeted parameter is absent-equivalent.
|
|
191
250
|
* For the MVP, only `null` and `undefined` are treated as absent and unsupported shapes remain exact no-op.
|
|
@@ -198,4 +257,14 @@ const pruneOptionalConditionBranches = (query, pruningParameters) => {
|
|
|
198
257
|
return query;
|
|
199
258
|
};
|
|
200
259
|
exports.pruneOptionalConditionBranches = pruneOptionalConditionBranches;
|
|
260
|
+
/**
|
|
261
|
+
* Collects supported top-level optional condition branches from the query graph.
|
|
262
|
+
* The returned branch expressions keep object identity so callers can move them without re-rendering.
|
|
263
|
+
*/
|
|
264
|
+
const collectSupportedOptionalConditionBranches = (query) => {
|
|
265
|
+
const branches = [];
|
|
266
|
+
collectSupportedBranchesFromSelectQuery(query, branches);
|
|
267
|
+
return branches;
|
|
268
|
+
};
|
|
269
|
+
exports.collectSupportedOptionalConditionBranches = collectSupportedOptionalConditionBranches;
|
|
201
270
|
//# sourceMappingURL=PruneOptionalConditionBranches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PruneOptionalConditionBranches.js","sourceRoot":"","sources":["../../src/transformers/PruneOptionalConditionBranches.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAC/C,uDAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"PruneOptionalConditionBranches.js","sourceRoot":"","sources":["../../src/transformers/PruneOptionalConditionBranches.ts"],"names":[],"mappings":"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"}
|