rawsql-ts 0.19.0 → 0.20.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.
@@ -1,11 +1,43 @@
1
- import { SelectQuery } from "../models/SelectQuery";
1
+ import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
2
+ import { type ValueComponent } from "../models/ValueComponent";
2
3
  import { type SupportedOptionalConditionBranch } from "./PruneOptionalConditionBranches";
3
4
  export type SSSQLFilterValue = unknown;
4
5
  export type SSSQLFilterInput = Record<string, SSSQLFilterValue>;
5
6
  export type SssqlScaffoldFilters = SSSQLFilterInput;
7
+ export type SssqlScalarOperator = "=" | "<>" | "<" | "<=" | ">" | ">=" | "like" | "ilike";
8
+ export type SssqlScalarOperatorInput = SssqlScalarOperator | "!=";
9
+ export type SssqlBranchKind = "scalar" | "exists" | "not-exists" | "expression";
6
10
  export interface SssqlTransformResult {
7
11
  query: SelectQuery;
8
12
  }
13
+ export interface SssqlBranchInfo {
14
+ parameterName: string;
15
+ kind: SssqlBranchKind;
16
+ operator?: SssqlScalarOperator;
17
+ target?: string;
18
+ query: SimpleSelectQuery;
19
+ expression: ValueComponent;
20
+ sql: string;
21
+ }
22
+ export interface SssqlScalarScaffoldSpec {
23
+ kind?: "scalar";
24
+ target: string;
25
+ parameterName?: string;
26
+ operator?: SssqlScalarOperatorInput;
27
+ }
28
+ export interface SssqlExistsScaffoldSpec {
29
+ kind: "exists" | "not-exists";
30
+ parameterName: string;
31
+ query: string;
32
+ anchorColumns: string[];
33
+ }
34
+ export type SssqlScaffoldSpec = SssqlScalarScaffoldSpec | SssqlExistsScaffoldSpec;
35
+ export interface SssqlRemoveSpec {
36
+ parameterName: string;
37
+ kind?: SssqlBranchKind;
38
+ operator?: SssqlScalarOperatorInput;
39
+ target?: string;
40
+ }
9
41
  /**
10
42
  * Builds and refreshes truthful SSSQL optional filter branches.
11
43
  * Runtime callers should use pruning, not dynamic predicate injection.
@@ -14,16 +46,31 @@ export declare class SSSQLFilterBuilder {
14
46
  private readonly tableColumnResolver?;
15
47
  private readonly finder;
16
48
  constructor(tableColumnResolver?: ((tableName: string) => string[]) | undefined);
49
+ list(query: SelectQuery | string): SssqlBranchInfo[];
17
50
  scaffold(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
51
+ scaffoldBranch(query: SelectQuery | string, spec: SssqlScaffoldSpec): SelectQuery;
18
52
  refresh(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
53
+ remove(query: SelectQuery | string, spec: SssqlRemoveSpec): SelectQuery;
54
+ removeAll(query: SelectQuery | string): SelectQuery;
19
55
  private parseQuery;
56
+ private findMatchingBranchInfos;
57
+ private scaffoldScalarBranch;
58
+ private scaffoldExistsBranch;
20
59
  private resolveTarget;
21
60
  private resolveTargetInQuery;
22
61
  private resolveQualifiedTarget;
23
62
  private resolveUnqualifiedTarget;
24
63
  private findAliasForTable;
25
64
  private resolveAliasForSource;
65
+ private buildCorrelatedRefreshPlan;
66
+ private collectSourceAliases;
67
+ private resolveCorrelatedAnchorTarget;
68
+ private findSourceExpressionByAlias;
69
+ private resolveSourceExpressionToUpstreamQuery;
70
+ private resolveAnchorTargetInQuery;
71
+ private getSourceAlias;
26
72
  private rebaseMovedBranch;
73
+ private rebaseMovedBranchByAlias;
27
74
  }
28
75
  export type { SupportedOptionalConditionBranch };
29
76
  export declare const scaffoldSssqlQuery: (sqlContent: string, filters: SssqlScaffoldFilters) => SssqlTransformResult;