@powersync/service-sync-rules 0.0.0-dev-20251209070120 → 0.0.0-dev-20260114113449
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/dist/BaseSqlDataQuery.d.ts +3 -9
- package/dist/BaseSqlDataQuery.js +10 -10
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketParameterQuerier.d.ts +15 -5
- package/dist/BucketParameterQuerier.js +18 -3
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +94 -25
- package/dist/BucketSource.js +67 -0
- package/dist/BucketSource.js.map +1 -1
- package/dist/HydratedSyncRules.d.ts +46 -0
- package/dist/HydratedSyncRules.js +88 -0
- package/dist/HydratedSyncRules.js.map +1 -0
- package/dist/HydrationState.d.ts +45 -0
- package/dist/HydrationState.js +41 -0
- package/dist/HydrationState.js.map +1 -0
- package/dist/SqlBucketDescriptor.d.ts +31 -28
- package/dist/SqlBucketDescriptor.js +89 -112
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +4 -4
- package/dist/SqlDataQuery.js +5 -6
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +17 -9
- package/dist/SqlParameterQuery.js +49 -21
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +13 -29
- package/dist/SqlSyncRules.js +48 -77
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +13 -3
- package/dist/StaticSqlParameterQuery.js +39 -4
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +14 -4
- package/dist/TableValuedFunctionSqlParameterQuery.js +42 -7
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/compatibility.d.ts +23 -1
- package/dist/compatibility.js +32 -4
- package/dist/compatibility.js.map +1 -1
- package/dist/events/SqlEventDescriptor.js +1 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +1 -1
- package/dist/events/SqlEventSourceQuery.js +1 -2
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +5 -1
- package/dist/json_schema.js.map +1 -1
- package/dist/request_functions.js +1 -1
- package/dist/request_functions.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.js +1 -1
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/streams/filter.d.ts +34 -4
- package/dist/streams/filter.js +93 -23
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/from_sql.js +2 -5
- package/dist/streams/from_sql.js.map +1 -1
- package/dist/streams/parameter.d.ts +7 -6
- package/dist/streams/stream.d.ts +25 -15
- package/dist/streams/stream.js +59 -87
- package/dist/streams/stream.js.map +1 -1
- package/dist/streams/variant.d.ts +14 -21
- package/dist/streams/variant.js +68 -45
- package/dist/streams/variant.js.map +1 -1
- package/dist/types/custom_sqlite_value.d.ts +1 -1
- package/dist/types/time.d.ts +24 -5
- package/dist/types/time.js +67 -12
- package/dist/types/time.js.map +1 -1
- package/dist/types.d.ts +44 -24
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +4 -2
- package/dist/utils.js +6 -3
- package/dist/utils.js.map +1 -1
- package/package.json +4 -3
- package/schema/sync_rules.json +9 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This represents hydration state that performs no transformations.
|
|
3
|
+
*
|
|
4
|
+
* This is the legacy default behavior with no bucket versioning.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_HYDRATION_STATE = {
|
|
7
|
+
getBucketSourceScope(source) {
|
|
8
|
+
return {
|
|
9
|
+
bucketPrefix: source.uniqueName
|
|
10
|
+
};
|
|
11
|
+
},
|
|
12
|
+
getParameterIndexLookupScope(source) {
|
|
13
|
+
return source.defaultLookupScope;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Transforms bucket ids generated when evaluating the row by e.g. encoding version information.
|
|
18
|
+
*
|
|
19
|
+
* Because buckets are recreated on a sync rule redeploy, it makes sense to use different bucket ids (otherwise, clients
|
|
20
|
+
* may run into checksum errors causing a sync to take longer than necessary or breaking progress).
|
|
21
|
+
*
|
|
22
|
+
* So, this transformer receives the original bucket id as generated by defined sync rules, and can prepend a version
|
|
23
|
+
* identifier.
|
|
24
|
+
*
|
|
25
|
+
* Note that this transformation has not been present in older versions of the sync service. To preserve backwards
|
|
26
|
+
* compatibility, sync rules will not use this without an opt-in.
|
|
27
|
+
*/
|
|
28
|
+
export function versionedHydrationState(version) {
|
|
29
|
+
return {
|
|
30
|
+
getBucketSourceScope(source) {
|
|
31
|
+
return {
|
|
32
|
+
bucketPrefix: `${version}#${source.uniqueName}`
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
getParameterIndexLookupScope(source) {
|
|
36
|
+
// No transformations applied here
|
|
37
|
+
return source.defaultLookupScope;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=HydrationState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydrationState.js","sourceRoot":"","sources":["../src/HydrationState.ts"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,oBAAoB,CAAC,MAAwB;QAC3C,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC;IACJ,CAAC;IACD,4BAA4B,CAAC,MAAM;QACjC,OAAO,MAAM,CAAC,kBAAkB,CAAC;IACnC,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,OAAO;QACL,oBAAoB,CAAC,MAAwB;YAC3C,OAAO;gBACL,YAAY,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE;aAChD,CAAC;QACJ,CAAC;QAED,4BAA4B,CAAC,MAAmC;YAC9D,kCAAkC;YAClC,OAAO,MAAM,CAAC,kBAAkB,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BucketParameterQuerier, PendingQueriers } from './BucketParameterQuerier.js';
|
|
3
|
-
import { BucketSource, BucketSourceType } from './BucketSource.js';
|
|
1
|
+
import { BucketDataSource, BucketSource, BucketSourceType, CreateSourceParams, HydratedBucketSource } from './BucketSource.js';
|
|
4
2
|
import { ColumnDefinition } from './ExpressionType.js';
|
|
5
3
|
import { IdSequence } from './IdSequence.js';
|
|
6
4
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
7
5
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
8
6
|
import { SqlParameterQuery } from './SqlParameterQuery.js';
|
|
9
|
-
import {
|
|
7
|
+
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
10
8
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
11
9
|
import { TablePattern } from './TablePattern.js';
|
|
12
10
|
import { TableValuedFunctionSqlParameterQuery } from './TableValuedFunctionSqlParameterQuery.js';
|
|
13
|
-
import { SqlRuleError } from './errors.js';
|
|
14
11
|
import { CompatibilityContext } from './compatibility.js';
|
|
15
|
-
import {
|
|
12
|
+
import { SqlRuleError } from './errors.js';
|
|
13
|
+
import { EvaluateRowOptions, QueryParseOptions, SourceSchema, UnscopedEvaluationResult } from './types.js';
|
|
16
14
|
export interface QueryParseResult {
|
|
17
15
|
/**
|
|
18
16
|
* True if parsed in some form, even if there are errors.
|
|
@@ -22,10 +20,9 @@ export interface QueryParseResult {
|
|
|
22
20
|
}
|
|
23
21
|
export declare class SqlBucketDescriptor implements BucketSource {
|
|
24
22
|
name: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
get subscribedToByDefault(): boolean;
|
|
23
|
+
private bucketParametersInternal;
|
|
24
|
+
readonly subscribedToByDefault: boolean;
|
|
25
|
+
private readonly dataSource;
|
|
29
26
|
/**
|
|
30
27
|
* source table -> queries
|
|
31
28
|
*/
|
|
@@ -33,29 +30,18 @@ export declare class SqlBucketDescriptor implements BucketSource {
|
|
|
33
30
|
parameterQueries: SqlParameterQuery[];
|
|
34
31
|
globalParameterQueries: (StaticSqlParameterQuery | TableValuedFunctionSqlParameterQuery)[];
|
|
35
32
|
parameterIdSequence: IdSequence;
|
|
33
|
+
constructor(name: string);
|
|
34
|
+
get type(): BucketSourceType;
|
|
35
|
+
get bucketParameters(): string[];
|
|
36
|
+
get dataSources(): BucketDefinitionDataSource[];
|
|
37
|
+
get parameterIndexLookupCreators(): SqlParameterQuery[];
|
|
38
|
+
get parameterQuerierSources(): (StaticSqlParameterQuery | TableValuedFunctionSqlParameterQuery | SqlParameterQuery)[];
|
|
36
39
|
addDataQuery(sql: string, options: SyncRulesOptions, compatibility: CompatibilityContext): QueryParseResult;
|
|
37
40
|
addParameterQuery(sql: string, options: QueryParseOptions): QueryParseResult;
|
|
38
|
-
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
39
|
-
evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
40
|
-
/**
|
|
41
|
-
* @deprecated Use `pushBucketParameterQueriers` instead and merge at the top-level.
|
|
42
|
-
*/
|
|
43
|
-
getBucketParameterQuerier(options: GetQuerierOptions): BucketParameterQuerier;
|
|
44
|
-
pushBucketParameterQueriers(result: PendingQueriers, options: GetQuerierOptions): void;
|
|
45
|
-
getStaticBucketDescriptions(parameters: RequestParameters, reasons: BucketInclusionReason[], transformer: BucketIdTransformer): ResolvedBucket[];
|
|
46
|
-
hasDynamicBucketQueries(): boolean;
|
|
47
|
-
getSourceTables(): Set<TablePattern>;
|
|
48
|
-
private bucketInclusionReason;
|
|
49
|
-
tableSyncsData(table: SourceTableInterface): boolean;
|
|
50
|
-
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
51
|
-
resolveResultSets(schema: SourceSchema, tables: Record<string, Record<string, ColumnDefinition>>): void;
|
|
52
|
-
debugWriteOutputTables(result: Record<string, {
|
|
53
|
-
query: string;
|
|
54
|
-
}[]>): void;
|
|
55
41
|
debugRepresentation(): {
|
|
56
42
|
name: string;
|
|
57
43
|
type: string;
|
|
58
|
-
bucket_parameters: string[]
|
|
44
|
+
bucket_parameters: string[];
|
|
59
45
|
global_parameter_queries: {
|
|
60
46
|
sql: string;
|
|
61
47
|
}[];
|
|
@@ -70,4 +56,21 @@ export declare class SqlBucketDescriptor implements BucketSource {
|
|
|
70
56
|
columns: string[];
|
|
71
57
|
}[];
|
|
72
58
|
};
|
|
59
|
+
hydrate(params: CreateSourceParams): HydratedBucketSource;
|
|
60
|
+
}
|
|
61
|
+
export declare class BucketDefinitionDataSource implements BucketDataSource {
|
|
62
|
+
private descriptor;
|
|
63
|
+
constructor(descriptor: SqlBucketDescriptor);
|
|
64
|
+
/**
|
|
65
|
+
* For debug use only.
|
|
66
|
+
*/
|
|
67
|
+
get bucketParameters(): string[];
|
|
68
|
+
get uniqueName(): string;
|
|
69
|
+
evaluateRow(options: EvaluateRowOptions): UnscopedEvaluationResult[];
|
|
70
|
+
getSourceTables(): Set<TablePattern>;
|
|
71
|
+
tableSyncsData(table: SourceTableInterface): boolean;
|
|
72
|
+
resolveResultSets(schema: SourceSchema, tables: Record<string, Record<string, ColumnDefinition>>): void;
|
|
73
|
+
debugWriteOutputTables(result: Record<string, {
|
|
74
|
+
query: string;
|
|
75
|
+
}[]>): void;
|
|
73
76
|
}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
import { mergeBucketParameterQueriers } from './BucketParameterQuerier.js';
|
|
2
1
|
import { BucketSourceType } from './BucketSource.js';
|
|
3
2
|
import { IdSequence } from './IdSequence.js';
|
|
4
3
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
5
4
|
import { SqlParameterQuery } from './SqlParameterQuery.js';
|
|
6
5
|
export class SqlBucketDescriptor {
|
|
7
6
|
name;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
get type() {
|
|
13
|
-
return BucketSourceType.SYNC_RULE;
|
|
14
|
-
}
|
|
15
|
-
get subscribedToByDefault() {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
7
|
+
bucketParametersInternal = null;
|
|
8
|
+
subscribedToByDefault = true;
|
|
9
|
+
dataSource = new BucketDefinitionDataSource(this);
|
|
18
10
|
/**
|
|
19
11
|
* source table -> queries
|
|
20
12
|
*/
|
|
@@ -22,11 +14,29 @@ export class SqlBucketDescriptor {
|
|
|
22
14
|
parameterQueries = [];
|
|
23
15
|
globalParameterQueries = [];
|
|
24
16
|
parameterIdSequence = new IdSequence();
|
|
17
|
+
constructor(name) {
|
|
18
|
+
this.name = name;
|
|
19
|
+
}
|
|
20
|
+
get type() {
|
|
21
|
+
return BucketSourceType.SYNC_RULE;
|
|
22
|
+
}
|
|
23
|
+
get bucketParameters() {
|
|
24
|
+
return this.bucketParametersInternal ?? [];
|
|
25
|
+
}
|
|
26
|
+
get dataSources() {
|
|
27
|
+
return [this.dataSource];
|
|
28
|
+
}
|
|
29
|
+
get parameterIndexLookupCreators() {
|
|
30
|
+
return this.parameterQueries;
|
|
31
|
+
}
|
|
32
|
+
get parameterQuerierSources() {
|
|
33
|
+
return [...this.parameterQueries, ...this.globalParameterQueries];
|
|
34
|
+
}
|
|
25
35
|
addDataQuery(sql, options, compatibility) {
|
|
26
|
-
if (this.
|
|
36
|
+
if (this.bucketParametersInternal == null) {
|
|
27
37
|
throw new Error('Bucket parameters must be defined');
|
|
28
38
|
}
|
|
29
|
-
const dataRows = SqlDataQuery.fromSql(this.
|
|
39
|
+
const dataRows = SqlDataQuery.fromSql(this.bucketParametersInternal, sql, options, compatibility);
|
|
30
40
|
this.dataQueries.push(dataRows);
|
|
31
41
|
return {
|
|
32
42
|
parsed: true,
|
|
@@ -34,12 +44,13 @@ export class SqlBucketDescriptor {
|
|
|
34
44
|
};
|
|
35
45
|
}
|
|
36
46
|
addParameterQuery(sql, options) {
|
|
37
|
-
const parameterQuery = SqlParameterQuery.fromSql(this.name, sql, options, this.parameterIdSequence.nextId());
|
|
38
|
-
if (this.
|
|
39
|
-
this.
|
|
47
|
+
const parameterQuery = SqlParameterQuery.fromSql(this.name, sql, options, this.parameterIdSequence.nextId(), this.dataSource);
|
|
48
|
+
if (this.bucketParametersInternal == null) {
|
|
49
|
+
this.bucketParametersInternal = parameterQuery.bucketParameters;
|
|
40
50
|
}
|
|
41
51
|
else {
|
|
42
|
-
if (new Set([...parameterQuery.bucketParameters, ...this.
|
|
52
|
+
if (new Set([...parameterQuery.bucketParameters, ...this.bucketParametersInternal]).size !=
|
|
53
|
+
this.bucketParametersInternal.length) {
|
|
43
54
|
throw new Error('Bucket parameters must match for each parameter query within a bucket');
|
|
44
55
|
}
|
|
45
56
|
}
|
|
@@ -54,89 +65,83 @@ export class SqlBucketDescriptor {
|
|
|
54
65
|
errors: parameterQuery.errors
|
|
55
66
|
};
|
|
56
67
|
}
|
|
57
|
-
|
|
58
|
-
let
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
debugRepresentation() {
|
|
69
|
+
let all_parameter_queries = [...this.parameterQueries.values()].flat();
|
|
70
|
+
let all_data_queries = [...this.dataQueries.values()].flat();
|
|
71
|
+
return {
|
|
72
|
+
name: this.name,
|
|
73
|
+
type: BucketSourceType[this.type],
|
|
74
|
+
bucket_parameters: this.bucketParameters,
|
|
75
|
+
global_parameter_queries: this.globalParameterQueries.map((q) => {
|
|
76
|
+
return {
|
|
77
|
+
sql: q.sql
|
|
78
|
+
};
|
|
79
|
+
}),
|
|
80
|
+
parameter_queries: all_parameter_queries.map((q) => {
|
|
81
|
+
return {
|
|
82
|
+
sql: q.sql,
|
|
83
|
+
table: q.sourceTable,
|
|
84
|
+
input_parameters: q.inputParameters
|
|
85
|
+
};
|
|
86
|
+
}),
|
|
87
|
+
data_queries: all_data_queries.map((q) => {
|
|
88
|
+
return {
|
|
89
|
+
sql: q.sql,
|
|
90
|
+
table: q.sourceTable,
|
|
91
|
+
columns: q.columnOutputNames()
|
|
92
|
+
};
|
|
93
|
+
})
|
|
94
|
+
};
|
|
66
95
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
96
|
+
hydrate(params) {
|
|
97
|
+
const hydratedParameterQueriers = this.parameterQueries.map((querier) => querier.createParameterQuerierSource(params));
|
|
98
|
+
const hydratedGlobalParameterQueriers = this.globalParameterQueries.map((querier) => querier.createParameterQuerierSource(params));
|
|
99
|
+
return {
|
|
100
|
+
definition: this,
|
|
101
|
+
pushBucketParameterQueriers: (result, options) => {
|
|
102
|
+
for (let querier of hydratedParameterQueriers) {
|
|
103
|
+
querier.pushBucketParameterQueriers(result, options);
|
|
104
|
+
}
|
|
105
|
+
for (let querier of hydratedGlobalParameterQueriers) {
|
|
106
|
+
querier.pushBucketParameterQueriers(result, options);
|
|
107
|
+
}
|
|
72
108
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export class BucketDefinitionDataSource {
|
|
113
|
+
descriptor;
|
|
114
|
+
constructor(descriptor) {
|
|
115
|
+
this.descriptor = descriptor;
|
|
75
116
|
}
|
|
76
117
|
/**
|
|
77
|
-
*
|
|
118
|
+
* For debug use only.
|
|
78
119
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
pushBucketParameterQueriers(result, options) {
|
|
85
|
-
const reasons = [this.bucketInclusionReason()];
|
|
86
|
-
const staticBuckets = this.getStaticBucketDescriptions(options.globalParameters, reasons, options.bucketIdTransformer);
|
|
87
|
-
const staticQuerier = {
|
|
88
|
-
staticBuckets,
|
|
89
|
-
hasDynamicBuckets: false,
|
|
90
|
-
parameterQueryLookups: [],
|
|
91
|
-
queryDynamicBucketDescriptions: async () => []
|
|
92
|
-
};
|
|
93
|
-
result.queriers.push(staticQuerier);
|
|
94
|
-
if (this.parameterQueries.length == 0) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const dynamicQueriers = this.parameterQueries.map((query) => query.getBucketParameterQuerier(options.globalParameters, reasons, options.bucketIdTransformer));
|
|
98
|
-
result.queriers.push(...dynamicQueriers);
|
|
120
|
+
get bucketParameters() {
|
|
121
|
+
return this.descriptor.bucketParameters;
|
|
122
|
+
}
|
|
123
|
+
get uniqueName() {
|
|
124
|
+
return this.descriptor.name;
|
|
99
125
|
}
|
|
100
|
-
|
|
126
|
+
evaluateRow(options) {
|
|
101
127
|
let results = [];
|
|
102
|
-
for (let query of this.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
...desc,
|
|
106
|
-
definition: this.name,
|
|
107
|
-
inclusion_reasons: reasons
|
|
108
|
-
});
|
|
128
|
+
for (let query of this.descriptor.dataQueries) {
|
|
129
|
+
if (!query.applies(options.sourceTable)) {
|
|
130
|
+
continue;
|
|
109
131
|
}
|
|
132
|
+
results.push(...query.evaluateRow(options.sourceTable, options.record));
|
|
110
133
|
}
|
|
111
134
|
return results;
|
|
112
135
|
}
|
|
113
|
-
hasDynamicBucketQueries() {
|
|
114
|
-
return this.parameterQueries.length > 0;
|
|
115
|
-
}
|
|
116
136
|
getSourceTables() {
|
|
117
137
|
let result = new Set();
|
|
118
|
-
for (let query of this.
|
|
119
|
-
result.add(query.sourceTable);
|
|
120
|
-
}
|
|
121
|
-
for (let query of this.dataQueries) {
|
|
138
|
+
for (let query of this.descriptor.dataQueries) {
|
|
122
139
|
result.add(query.sourceTable);
|
|
123
140
|
}
|
|
124
|
-
// Note: No physical tables for global_parameter_queries
|
|
125
141
|
return result;
|
|
126
142
|
}
|
|
127
|
-
bucketInclusionReason() {
|
|
128
|
-
return 'default';
|
|
129
|
-
}
|
|
130
143
|
tableSyncsData(table) {
|
|
131
|
-
for (let query of this.dataQueries) {
|
|
132
|
-
if (query.applies(table)) {
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
tableSyncsParameters(table) {
|
|
139
|
-
for (let query of this.parameterQueries) {
|
|
144
|
+
for (let query of this.descriptor.dataQueries) {
|
|
140
145
|
if (query.applies(table)) {
|
|
141
146
|
return true;
|
|
142
147
|
}
|
|
@@ -144,12 +149,12 @@ export class SqlBucketDescriptor {
|
|
|
144
149
|
return false;
|
|
145
150
|
}
|
|
146
151
|
resolveResultSets(schema, tables) {
|
|
147
|
-
for (let query of this.dataQueries) {
|
|
152
|
+
for (let query of this.descriptor.dataQueries) {
|
|
148
153
|
query.resolveResultSets(schema, tables);
|
|
149
154
|
}
|
|
150
155
|
}
|
|
151
156
|
debugWriteOutputTables(result) {
|
|
152
|
-
for (let q of this.dataQueries) {
|
|
157
|
+
for (let q of this.descriptor.dataQueries) {
|
|
153
158
|
result[q.table.sqlName] ??= [];
|
|
154
159
|
const r = {
|
|
155
160
|
query: q.sql
|
|
@@ -157,33 +162,5 @@ export class SqlBucketDescriptor {
|
|
|
157
162
|
result[q.table.sqlName].push(r);
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
|
-
debugRepresentation() {
|
|
161
|
-
let all_parameter_queries = [...this.parameterQueries.values()].flat();
|
|
162
|
-
let all_data_queries = [...this.dataQueries.values()].flat();
|
|
163
|
-
return {
|
|
164
|
-
name: this.name,
|
|
165
|
-
type: BucketSourceType[this.type],
|
|
166
|
-
bucket_parameters: this.bucketParameters,
|
|
167
|
-
global_parameter_queries: this.globalParameterQueries.map((q) => {
|
|
168
|
-
return {
|
|
169
|
-
sql: q.sql
|
|
170
|
-
};
|
|
171
|
-
}),
|
|
172
|
-
parameter_queries: all_parameter_queries.map((q) => {
|
|
173
|
-
return {
|
|
174
|
-
sql: q.sql,
|
|
175
|
-
table: q.sourceTable,
|
|
176
|
-
input_parameters: q.inputParameters
|
|
177
|
-
};
|
|
178
|
-
}),
|
|
179
|
-
data_queries: all_data_queries.map((q) => {
|
|
180
|
-
return {
|
|
181
|
-
sql: q.sql,
|
|
182
|
-
table: q.sourceTable,
|
|
183
|
-
columns: q.columnOutputNames()
|
|
184
|
-
};
|
|
185
|
-
})
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
165
|
}
|
|
189
166
|
//# sourceMappingURL=SqlBucketDescriptor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAkB3D,MAAM,OAAO,mBAAmB;IAC9B,IAAI,CAAS;IACL,wBAAwB,GAAoB,IAAI,CAAC;IAEzC,qBAAqB,GAAY,IAAI,CAAC;IAErC,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEnE;;OAEG;IACH,WAAW,GAAmB,EAAE,CAAC;IACjC,gBAAgB,GAAwB,EAAE,CAAC;IAC3C,sBAAsB,GAAuE,EAAE,CAAC;IAEhG,mBAAmB,GAAG,IAAI,UAAU,EAAE,CAAC;IAEvC,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,gBAAgB,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,4BAA4B;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpE,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,OAAyB,EAAE,aAAmC;QACtF,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAElG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,OAA0B;QACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAC9C,IAAI,CAAC,IAAI,EACT,GAAG,EACH,OAAO,EACP,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EACjC,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC,gBAAgB,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IACE,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,gBAAiB,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI;gBACrF,IAAI,CAAC,wBAAwB,CAAC,MAAM,EACpC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QACD,IAAI,cAAc,YAAY,iBAAiB,EAAE,CAAC;YAChD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,cAAc,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,IAAI,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvE,IAAI,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB;YACxC,wBAAwB,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9D,OAAO;oBACL,GAAG,EAAE,CAAC,CAAC,GAAG;iBACX,CAAC;YACJ,CAAC,CAAC;YACF,iBAAiB,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjD,OAAO;oBACL,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,WAAW;oBACpB,gBAAgB,EAAE,CAAC,CAAC,eAAe;iBACpC,CAAC;YACJ,CAAC,CAAC;YACF,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvC,OAAO;oBACL,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,WAAW;oBACpB,OAAO,EAAE,CAAC,CAAC,iBAAiB,EAAE;iBAC/B,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,MAA0B;QAChC,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACtE,OAAO,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAC7C,CAAC;QACF,MAAM,+BAA+B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAClF,OAAO,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAC7C,CAAC;QAEF,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,2BAA2B,EAAE,CAAC,MAAuB,EAAE,OAA0B,EAAE,EAAE;gBACnF,KAAK,IAAI,OAAO,IAAI,yBAAyB,EAAE,CAAC;oBAC9C,OAAO,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvD,CAAC;gBACD,KAAK,IAAI,OAAO,IAAI,+BAA+B,EAAE,CAAC;oBACpD,OAAO,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,0BAA0B;IACjB;IAApB,YAAoB,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAEvD;;OAEG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,OAA2B;QACrC,IAAI,OAAO,GAA+B,EAAE,CAAC;QAC7C,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,eAAe;QACb,IAAI,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;QACrC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,KAA2B;QACxC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB,CAAC,MAAoB,EAAE,MAAwD;QAC9F,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9C,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,sBAAsB,CAAC,MAA2C;QAChE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,CAAC,CAAC,CAAC,KAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG;gBACR,KAAK,EAAE,CAAC,CAAC,GAAG;aACb,CAAC;YAEF,MAAM,CAAC,CAAC,CAAC,KAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF"}
|
package/dist/SqlDataQuery.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { BaseSqlDataQuery, BaseSqlDataQueryOptions } from './BaseSqlDataQuery.js';
|
|
2
|
+
import { CompatibilityContext } from './compatibility.js';
|
|
2
3
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
4
|
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
4
|
-
import {
|
|
5
|
-
import { CompatibilityContext } from './compatibility.js';
|
|
5
|
+
import { ParameterMatchClause, UnscopedEvaluationResult, SqliteRow } from './types.js';
|
|
6
6
|
export interface SqlDataQueryOptions extends BaseSqlDataQueryOptions {
|
|
7
7
|
filter: ParameterMatchClause;
|
|
8
8
|
}
|
|
9
9
|
export declare class SqlDataQuery extends BaseSqlDataQuery {
|
|
10
|
-
static fromSql(
|
|
10
|
+
static fromSql(bucketParameters: string[], sql: string, options: SyncRulesOptions, compatibility: CompatibilityContext): SqlDataQuery;
|
|
11
11
|
/**
|
|
12
12
|
* The query WHERE clause.
|
|
13
13
|
*
|
|
@@ -17,5 +17,5 @@ export declare class SqlDataQuery extends BaseSqlDataQuery {
|
|
|
17
17
|
*/
|
|
18
18
|
readonly filter: ParameterMatchClause;
|
|
19
19
|
constructor(options: SqlDataQueryOptions);
|
|
20
|
-
evaluateRow(table: SourceTableInterface, row: SqliteRow
|
|
20
|
+
evaluateRow(table: SourceTableInterface, row: SqliteRow): UnscopedEvaluationResult[];
|
|
21
21
|
}
|
package/dist/SqlDataQuery.js
CHANGED
|
@@ -7,9 +7,9 @@ import { AvailableTable, SqlTools } from './sql_filters.js';
|
|
|
7
7
|
import { checkUnsupportedFeatures, isClauseError } from './sql_support.js';
|
|
8
8
|
import { TablePattern } from './TablePattern.js';
|
|
9
9
|
import { TableQuerySchema } from './TableQuerySchema.js';
|
|
10
|
-
import {
|
|
10
|
+
import { isSelectStatement, serializeBucketParameters } from './utils.js';
|
|
11
11
|
export class SqlDataQuery extends BaseSqlDataQuery {
|
|
12
|
-
static fromSql(
|
|
12
|
+
static fromSql(bucketParameters, sql, options, compatibility) {
|
|
13
13
|
const parsed = parse(sql, { locationTracking: true });
|
|
14
14
|
const schema = options.schema;
|
|
15
15
|
let errors = [];
|
|
@@ -131,7 +131,6 @@ export class SqlDataQuery extends BaseSqlDataQuery {
|
|
|
131
131
|
sql,
|
|
132
132
|
filter,
|
|
133
133
|
columns: q.columns ?? [],
|
|
134
|
-
descriptorName,
|
|
135
134
|
bucketParameters,
|
|
136
135
|
tools,
|
|
137
136
|
errors,
|
|
@@ -150,13 +149,13 @@ export class SqlDataQuery extends BaseSqlDataQuery {
|
|
|
150
149
|
super(options);
|
|
151
150
|
this.filter = options.filter;
|
|
152
151
|
}
|
|
153
|
-
evaluateRow(table, row
|
|
152
|
+
evaluateRow(table, row) {
|
|
154
153
|
return this.evaluateRowWithOptions({
|
|
155
154
|
table,
|
|
156
155
|
row,
|
|
157
|
-
|
|
156
|
+
serializedBucketParameters: (tables) => {
|
|
158
157
|
const bucketParameters = this.filter.filterRow(tables);
|
|
159
|
-
return bucketParameters.map((params) =>
|
|
158
|
+
return bucketParameters.map((params) => serializeBucketParameters(this.bucketParameters, params));
|
|
160
159
|
}
|
|
161
160
|
});
|
|
162
161
|
}
|
package/dist/SqlDataQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlDataQuery.js","sourceRoot":"","sources":["../src/SqlDataQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAA8C,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlDataQuery.js","sourceRoot":"","sources":["../src/SqlDataQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAA8C,MAAM,uBAAuB,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAM1E,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IAChD,MAAM,CAAC,OAAO,CACZ,gBAA0B,EAC1B,GAAW,EACX,OAAyB,EACzB,aAAmC;QAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,GAAmB,EAAE,CAAC;QAEhC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CAAC,6CAA6C,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YACtE,MAAM,IAAI,YAAY,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,YAAY,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,WAAW,GAA4B,SAAS,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,IAAI,YAAY,CACxB,SAAS,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,YAAY,YAAY,EACnE,GAAG,EACH,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CACvB,CAAC;gBACF,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;gBAEnB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC/C,WAAW,EAAE,CAAC,KAAK,CAAC;YACpB,oBAAoB,EAAE,aAAa;YACnC,GAAG;YACH,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/C,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,mBAAmB,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC;QACrF,IACE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YAClE,SAAS,CAAC,IAAI,IAAI,gBAAgB,CAAC,MAAM,EACzC,CAAC;YACD,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,qDAAqD,OAAO,CAAC,SAAS,CACpE,oBAAoB,CACrB,SAAS,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAClD,GAAG,EACH,CAAC,CAAC,SAAS,CACZ,CACF,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,UAAU,GAAwB,EAAE,CAAC;QAEzC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,uBAAuB;oBACvB,SAAS;gBACX,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;wBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACzC,CAAC;oBACD,QAAQ,CAAC,MAAM,EAAE,IAAI;wBACnB,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;wBAE/C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;oBACjG,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;wBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBACvC,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;4BACpB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCACxB,SAAS;4BACX,CAAC;4BACD,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBACD,QAAQ,CAAC,MAAM,EAAE,IAAI;wBACnB,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;4BACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;wBAC/B,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,WAAW,GAAG,IAAI,CAAC;gBACnB,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;oBACxB,iEAAiE;oBACjE,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC;oBAC5F,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;wBACrB,KAAK,GAAG,IAAI,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAClG,IAAI,WAAW,EAAE,CAAC;gBAChB,+CAA+C;gBAC/C,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7B,OAAO,IAAI,YAAY,CAAC;YACtB,WAAW;YACX,KAAK,EAAE,KAAK;YACZ,GAAG;YACH,MAAM;YACN,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;YACxB,gBAAgB;YAChB,KAAK;YACL,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACM,MAAM,CAAuB;IAEtC,YAAY,OAA4B;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,KAA2B,EAAE,GAAc;QACrD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,KAAK;YACL,GAAG;YACH,0BAA0B,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvD,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;YACpG,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { BucketDescription, BucketInclusionReason, BucketPriority } from './BucketDescription.js';
|
|
2
|
-
import { BucketParameterQuerier,
|
|
2
|
+
import { BucketParameterQuerier, UnscopedParameterLookup } from './BucketParameterQuerier.js';
|
|
3
|
+
import { CreateSourceParams, ParameterIndexLookupCreator } from './BucketSource.js';
|
|
3
4
|
import { SqlRuleError } from './errors.js';
|
|
5
|
+
import { BucketDataScope, ParameterLookupScope } from './HydrationState.js';
|
|
6
|
+
import { BucketDataSource, BucketParameterQuerierSource, UnscopedEvaluatedParametersResult } from './index.js';
|
|
4
7
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
5
8
|
import { AvailableTable, SqlTools } from './sql_filters.js';
|
|
6
9
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
7
10
|
import { TablePattern } from './TablePattern.js';
|
|
8
11
|
import { TableValuedFunctionSqlParameterQuery } from './TableValuedFunctionSqlParameterQuery.js';
|
|
9
|
-
import {
|
|
12
|
+
import { InputParameter, ParameterMatchClause, ParameterValueClause, QueryParseOptions, RequestParameters, RowValueClause, SqliteJsonRow, SqliteRow } from './types.js';
|
|
10
13
|
export interface SqlParameterQueryOptions {
|
|
11
14
|
sourceTable: TablePattern;
|
|
12
15
|
table: AvailableTable;
|
|
@@ -21,6 +24,7 @@ export interface SqlParameterQueryOptions {
|
|
|
21
24
|
bucketParameters: string[];
|
|
22
25
|
queryId: string;
|
|
23
26
|
tools: SqlTools;
|
|
27
|
+
querierDataSource: BucketDataSource;
|
|
24
28
|
errors?: SqlRuleError[];
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
@@ -29,8 +33,8 @@ export interface SqlParameterQueryOptions {
|
|
|
29
33
|
* SELECT id as user_id FROM users WHERE users.user_id = token_parameters.user_id
|
|
30
34
|
* SELECT id as user_id, token_parameters.is_admin as is_admin FROM users WHERE users.user_id = token_parameters.user_id
|
|
31
35
|
*/
|
|
32
|
-
export declare class SqlParameterQuery {
|
|
33
|
-
static fromSql(descriptorName: string, sql: string, options: QueryParseOptions, queryId: string): SqlParameterQuery | StaticSqlParameterQuery | TableValuedFunctionSqlParameterQuery;
|
|
36
|
+
export declare class SqlParameterQuery implements ParameterIndexLookupCreator {
|
|
37
|
+
static fromSql(descriptorName: string, sql: string, options: QueryParseOptions, queryId: string, querierDataSource: BucketDataSource): SqlParameterQuery | StaticSqlParameterQuery | TableValuedFunctionSqlParameterQuery;
|
|
34
38
|
/**
|
|
35
39
|
* The table the parameter query queries from.
|
|
36
40
|
*
|
|
@@ -99,27 +103,31 @@ export declare class SqlParameterQuery {
|
|
|
99
103
|
*/
|
|
100
104
|
readonly queryId: string;
|
|
101
105
|
readonly tools: SqlTools;
|
|
106
|
+
readonly querierDataSource: BucketDataSource;
|
|
102
107
|
readonly errors: SqlRuleError[];
|
|
103
108
|
constructor(options: SqlParameterQueryOptions);
|
|
104
|
-
|
|
109
|
+
get defaultLookupScope(): ParameterLookupScope;
|
|
110
|
+
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
111
|
+
getSourceTables(): Set<TablePattern>;
|
|
112
|
+
createParameterQuerierSource(params: CreateSourceParams): BucketParameterQuerierSource;
|
|
105
113
|
/**
|
|
106
114
|
* Given a replicated row, results an array of bucket parameter rows to persist.
|
|
107
115
|
*/
|
|
108
|
-
evaluateParameterRow(row: SqliteRow):
|
|
116
|
+
evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): UnscopedEvaluatedParametersResult[];
|
|
109
117
|
private transformRows;
|
|
110
118
|
/**
|
|
111
119
|
* Given partial parameter rows, turn into bucket ids.
|
|
112
120
|
*
|
|
113
121
|
* Internal function, but exposed for tests.
|
|
114
122
|
*/
|
|
115
|
-
resolveBucketDescriptions(bucketParameters: SqliteJsonRow[], parameters: RequestParameters,
|
|
123
|
+
resolveBucketDescriptions(bucketParameters: SqliteJsonRow[], parameters: RequestParameters, bucketScope: BucketDataScope): BucketDescription[];
|
|
116
124
|
/**
|
|
117
125
|
* Given sync parameters, get lookups we need to perform on the database.
|
|
118
126
|
*
|
|
119
127
|
* Each lookup is [bucket definition name, parameter query index, ...lookup values]
|
|
120
128
|
*/
|
|
121
|
-
getLookups(parameters: RequestParameters):
|
|
122
|
-
getBucketParameterQuerier(requestParameters: RequestParameters, reasons: BucketInclusionReason[],
|
|
129
|
+
getLookups(parameters: RequestParameters): UnscopedParameterLookup[];
|
|
130
|
+
getBucketParameterQuerier(requestParameters: RequestParameters, reasons: BucketInclusionReason[], bucketDataScope: BucketDataScope, scope: ParameterLookupScope): BucketParameterQuerier;
|
|
123
131
|
get hasAuthenticatedBucketParameters(): boolean;
|
|
124
132
|
get hasAuthenticatedMatchClause(): boolean;
|
|
125
133
|
get usesUnauthenticatedRequestParameters(): boolean;
|