@powersync/service-sync-rules 0.23.3 → 0.24.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/dist/BaseSqlDataQuery.js +11 -4
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +27 -0
- package/dist/BucketDescription.js +5 -0
- package/dist/BucketDescription.js.map +1 -0
- package/dist/BucketParameterQuerier.d.ts +42 -0
- package/dist/BucketParameterQuerier.js +18 -0
- package/dist/BucketParameterQuerier.js.map +1 -0
- package/dist/DartSchemaGenerator.js +8 -14
- package/dist/DartSchemaGenerator.js.map +1 -1
- package/dist/ExpressionType.js +15 -14
- package/dist/ExpressionType.js.map +1 -1
- package/dist/IdSequence.js +1 -3
- package/dist/IdSequence.js.map +1 -1
- package/dist/JsLegacySchemaGenerator.js +4 -7
- package/dist/JsLegacySchemaGenerator.js.map +1 -1
- package/dist/SchemaGenerator.js +2 -3
- package/dist/SchemaGenerator.js.map +1 -1
- package/dist/SqlBucketDescriptor.d.ts +5 -3
- package/dist/SqlBucketDescriptor.js +27 -16
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.js +3 -3
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +9 -11
- package/dist/SqlParameterQuery.js +72 -29
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +3 -9
- package/dist/SqlSyncRules.js +23 -26
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSchema.js +5 -0
- package/dist/StaticSchema.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +3 -1
- package/dist/StaticSqlParameterQuery.js +31 -7
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TablePattern.js +3 -0
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableQuerySchema.js +2 -0
- package/dist/TableQuerySchema.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +4 -2
- package/dist/TableValuedFunctionSqlParameterQuery.js +30 -9
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctions.js +1 -1
- package/dist/TableValuedFunctions.js.map +1 -1
- package/dist/TsSchemaGenerator.js +6 -0
- package/dist/TsSchemaGenerator.js.map +1 -1
- package/dist/errors.js +8 -2
- package/dist/errors.js.map +1 -1
- package/dist/events/SqlEventDescriptor.js +3 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.js +2 -3
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +4 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/sql_filters.d.ts +3 -0
- package/dist/sql_filters.js +28 -1
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +1 -1
- package/dist/sql_functions.js +5 -2
- package/dist/sql_functions.js.map +1 -1
- package/dist/types.d.ts +2 -4
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/schema/sync_rules.json +4 -0
package/dist/BaseSqlDataQuery.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { filterJsonRow } from './utils.js';
|
|
2
2
|
export class BaseSqlDataQuery {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
sourceTable;
|
|
4
|
+
table;
|
|
5
|
+
sql;
|
|
6
|
+
columns;
|
|
7
|
+
extractors = [];
|
|
8
|
+
descriptor_name;
|
|
9
|
+
bucket_parameters;
|
|
10
|
+
tools;
|
|
11
|
+
ruleId;
|
|
12
|
+
errors = [];
|
|
13
|
+
constructor() { }
|
|
7
14
|
applies(table) {
|
|
8
15
|
return this.sourceTable?.matches(table);
|
|
9
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The priority in which to synchronize buckets.
|
|
3
|
+
*
|
|
4
|
+
* Lower numbers represent higher priorities.
|
|
5
|
+
* Generally, the sync service _may_ synchronize buckets with higher priorities first.
|
|
6
|
+
* Priorities also refine the consistency notion by the sync service in the way that clients
|
|
7
|
+
* may choose to publish data when all buckets of a certain priority have been synchronized.
|
|
8
|
+
* So, when clients are synchronizing buckets with different priorities, they will only get
|
|
9
|
+
* consistent views within each priority.
|
|
10
|
+
*
|
|
11
|
+
* Additionally, data from buckets with priority 0 may be made visible when clients still
|
|
12
|
+
* have data in their upload queue.
|
|
13
|
+
*/
|
|
14
|
+
export type BucketPriority = 0 | 1 | 2 | 3;
|
|
15
|
+
export declare const defaultBucketPriority: BucketPriority;
|
|
16
|
+
export declare const isValidPriority: (i: number) => i is BucketPriority;
|
|
17
|
+
export interface BucketDescription {
|
|
18
|
+
/**
|
|
19
|
+
* The id of the bucket, which is derived from the name of the bucket's definition
|
|
20
|
+
* in the sync rules as well as the values returned by the parameter queries.
|
|
21
|
+
*/
|
|
22
|
+
bucket: string;
|
|
23
|
+
/**
|
|
24
|
+
* The priority used to synchronize this bucket, derived from its definition.
|
|
25
|
+
*/
|
|
26
|
+
priority: BucketPriority;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketDescription.js","sourceRoot":"","sources":["../src/BucketDescription.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,qBAAqB,GAAmB,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAuB,EAAE;IAChE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BucketDescription } from './BucketDescription.js';
|
|
2
|
+
import { RequestParameters, SqliteJsonRow, SqliteJsonValue } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a set of parameter queries for a specific request.
|
|
5
|
+
*/
|
|
6
|
+
export interface BucketParameterQuerier {
|
|
7
|
+
/**
|
|
8
|
+
* These buckets do not change for the lifetime of the connection.
|
|
9
|
+
*
|
|
10
|
+
* This includes parameter queries such as:
|
|
11
|
+
*
|
|
12
|
+
* select request.user_id() as user_id()
|
|
13
|
+
* select value as project_id from json_each(request.jwt() -> 'project_ids')
|
|
14
|
+
*/
|
|
15
|
+
readonly staticBuckets: BucketDescription[];
|
|
16
|
+
/**
|
|
17
|
+
* True if there are dynamic buckets, meaning queryDynamicBucketDescriptions() should be used.
|
|
18
|
+
*
|
|
19
|
+
* If this is false, queryDynamicBucketDescriptions() will always return an empty array,
|
|
20
|
+
* and dynamicBucketDefinitions.size == 0.
|
|
21
|
+
*/
|
|
22
|
+
readonly hasDynamicBuckets: boolean;
|
|
23
|
+
readonly dynamicBucketDefinitions: Set<string>;
|
|
24
|
+
/**
|
|
25
|
+
* These buckets depend on parameter storage, and needs to be retrieved dynamically for each checkpoint.
|
|
26
|
+
*
|
|
27
|
+
* The ParameterLookupSource should perform the query for the current checkpoint - that is not passed
|
|
28
|
+
* as a parameter.
|
|
29
|
+
*
|
|
30
|
+
* This includes parameter queries such as:
|
|
31
|
+
*
|
|
32
|
+
* select id as user_id from users where users.id = request.user_id()
|
|
33
|
+
*/
|
|
34
|
+
queryDynamicBucketDescriptions(source: ParameterLookupSource): Promise<BucketDescription[]>;
|
|
35
|
+
}
|
|
36
|
+
export interface ParameterLookupSource {
|
|
37
|
+
getParameterSets: (lookups: SqliteJsonValue[][]) => Promise<SqliteJsonRow[]>;
|
|
38
|
+
}
|
|
39
|
+
export interface QueryBucketDescriptorOptions extends ParameterLookupSource {
|
|
40
|
+
parameters: RequestParameters;
|
|
41
|
+
}
|
|
42
|
+
export declare function mergeBucketParameterQueriers(queriers: BucketParameterQuerier[]): BucketParameterQuerier;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function mergeBucketParameterQueriers(queriers) {
|
|
2
|
+
const dynamicBucketDefinitions = new Set(queriers.flatMap((q) => [...q.dynamicBucketDefinitions]));
|
|
3
|
+
return {
|
|
4
|
+
staticBuckets: queriers.flatMap((q) => q.staticBuckets),
|
|
5
|
+
hasDynamicBuckets: dynamicBucketDefinitions.size > 0,
|
|
6
|
+
dynamicBucketDefinitions,
|
|
7
|
+
async queryDynamicBucketDescriptions(source) {
|
|
8
|
+
let results = [];
|
|
9
|
+
for (let q of queriers) {
|
|
10
|
+
if (q.hasDynamicBuckets) {
|
|
11
|
+
results.push(...(await q.queryDynamicBucketDescriptions(source)));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return results;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=BucketParameterQuerier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketParameterQuerier.js","sourceRoot":"","sources":["../src/BucketParameterQuerier.ts"],"names":[],"mappings":"AAgDA,MAAM,UAAU,4BAA4B,CAAC,QAAkC;IAC7E,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC3G,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACvD,iBAAiB,EAAE,wBAAwB,CAAC,IAAI,GAAG,CAAC;QACpD,wBAAwB;QACxB,KAAK,CAAC,8BAA8B,CAAC,MAA6B;YAChE,IAAI,OAAO,GAAwB,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
3
|
export class DartSchemaGenerator extends SchemaGenerator {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.mediaType = 'text/x-dart';
|
|
9
|
-
this.fileName = 'schema.dart';
|
|
10
|
-
}
|
|
4
|
+
key = 'dart';
|
|
5
|
+
label = 'Dart';
|
|
6
|
+
mediaType = 'text/x-dart';
|
|
7
|
+
fileName = 'schema.dart';
|
|
11
8
|
generate(source, schema, options) {
|
|
12
9
|
const tables = super.getAllTables(source, schema);
|
|
13
10
|
return `Schema([
|
|
@@ -42,13 +39,10 @@ ${generated.join('\n')}
|
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
41
|
export class DartFlutterFlowSchemaGenerator extends SchemaGenerator {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.mediaType = 'application/json';
|
|
50
|
-
this.fileName = 'schema.json';
|
|
51
|
-
}
|
|
42
|
+
key = 'dart-flutterflow';
|
|
43
|
+
label = 'FlutterFlow';
|
|
44
|
+
mediaType = 'application/json';
|
|
45
|
+
fileName = 'schema.json';
|
|
52
46
|
generate(source, schema, options) {
|
|
53
47
|
return JSON.stringify({
|
|
54
48
|
tables: this.getAllTables(source, schema).map((e) => this.generateTable(e.name, e.columns))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../src/DartSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI9E,MAAM,OAAO,mBAAoB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../src/DartSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/ExpressionType.js
CHANGED
|
@@ -4,6 +4,21 @@ export const TYPE_TEXT = 2;
|
|
|
4
4
|
export const TYPE_INTEGER = 4;
|
|
5
5
|
export const TYPE_REAL = 8;
|
|
6
6
|
export class ExpressionType {
|
|
7
|
+
typeFlags;
|
|
8
|
+
/**
|
|
9
|
+
* Always null.
|
|
10
|
+
*/
|
|
11
|
+
static NONE = new ExpressionType(0);
|
|
12
|
+
/**
|
|
13
|
+
* Any type.
|
|
14
|
+
*/
|
|
15
|
+
static ANY = new ExpressionType(TYPE_BLOB | TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
16
|
+
static TEXT = new ExpressionType(TYPE_TEXT);
|
|
17
|
+
static INTEGER = new ExpressionType(TYPE_INTEGER);
|
|
18
|
+
static REAL = new ExpressionType(TYPE_REAL);
|
|
19
|
+
static BLOB = new ExpressionType(TYPE_BLOB);
|
|
20
|
+
static ANY_JSON = new ExpressionType(TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
21
|
+
static NUMERIC = new ExpressionType(TYPE_INTEGER | TYPE_REAL);
|
|
7
22
|
static of(typeFlags) {
|
|
8
23
|
// TODO: cache?
|
|
9
24
|
return new ExpressionType(typeFlags);
|
|
@@ -47,20 +62,6 @@ export class ExpressionType {
|
|
|
47
62
|
return this.typeFlags == TYPE_NONE;
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Always null.
|
|
52
|
-
*/
|
|
53
|
-
ExpressionType.NONE = new ExpressionType(0);
|
|
54
|
-
/**
|
|
55
|
-
* Any type.
|
|
56
|
-
*/
|
|
57
|
-
ExpressionType.ANY = new ExpressionType(TYPE_BLOB | TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
58
|
-
ExpressionType.TEXT = new ExpressionType(TYPE_TEXT);
|
|
59
|
-
ExpressionType.INTEGER = new ExpressionType(TYPE_INTEGER);
|
|
60
|
-
ExpressionType.REAL = new ExpressionType(TYPE_REAL);
|
|
61
|
-
ExpressionType.BLOB = new ExpressionType(TYPE_BLOB);
|
|
62
|
-
ExpressionType.ANY_JSON = new ExpressionType(TYPE_TEXT | TYPE_INTEGER | TYPE_REAL);
|
|
63
|
-
ExpressionType.NUMERIC = new ExpressionType(TYPE_INTEGER | TYPE_REAL);
|
|
64
65
|
/**
|
|
65
66
|
* Here only for backwards-compatibility only.
|
|
66
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAU3B,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
|
package/dist/IdSequence.js
CHANGED
package/dist/IdSequence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdSequence.js","sourceRoot":"","sources":["../src/IdSequence.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"IdSequence.js","sourceRoot":"","sources":["../src/IdSequence.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACb,KAAK,GAAG,CAAC,CAAC;IAElB,MAAM;QACJ,OAAO,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
3
|
export class JsLegacySchemaGenerator extends SchemaGenerator {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.mediaType = 'text/javascript';
|
|
9
|
-
this.fileName = 'schema.js';
|
|
10
|
-
}
|
|
4
|
+
key = 'jsLegacy';
|
|
5
|
+
label = 'JavaScript (legacy syntax)';
|
|
6
|
+
mediaType = 'text/javascript';
|
|
7
|
+
fileName = 'schema.js';
|
|
11
8
|
generate(source, schema) {
|
|
12
9
|
const tables = super.getAllTables(source, schema);
|
|
13
10
|
return `new Schema([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../src/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,OAAO,uBAAwB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../src/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IACjD,GAAG,GAAG,UAAU,CAAC;IACjB,KAAK,GAAG,4BAA4B,CAAC;IACrC,SAAS,GAAG,iBAAiB,CAAC;IAC9B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;IACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;CAErF,CAAC;IACA,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B;QAC7D,OAAO;aACE,IAAI;;QAET,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;;KAE/D,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC5B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACnC,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACtC,OAAO,uBAAuB,MAAM,CAAC,IAAI,gCAAgC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
|
package/dist/SchemaGenerator.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
export class SchemaGenerator {
|
|
2
2
|
getAllTables(source, schema) {
|
|
3
|
-
var _a, _b, _c;
|
|
4
3
|
let tables = {};
|
|
5
4
|
for (let descriptor of source.bucket_descriptors) {
|
|
6
5
|
for (let query of descriptor.data_queries) {
|
|
7
6
|
const outTables = query.getColumnOutputs(schema);
|
|
8
7
|
for (let table of outTables) {
|
|
9
|
-
tables[
|
|
8
|
+
tables[table.name] ??= {};
|
|
10
9
|
for (let column of table.columns) {
|
|
11
10
|
if (column.name != 'id') {
|
|
12
|
-
|
|
11
|
+
tables[table.name][column.name] ??= column;
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjD,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC1B,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACjC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;4BACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CAQF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { BucketDescription } from './BucketDescription.js';
|
|
2
|
+
import { BucketParameterQuerier } from './BucketParameterQuerier.js';
|
|
1
3
|
import { IdSequence } from './IdSequence.js';
|
|
2
4
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
3
5
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
@@ -6,7 +8,7 @@ import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
|
6
8
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
7
9
|
import { TablePattern } from './TablePattern.js';
|
|
8
10
|
import { SqlRuleError } from './errors.js';
|
|
9
|
-
import {
|
|
11
|
+
import { EvaluatedParametersResult, EvaluateRowOptions, EvaluationResult, QueryParseOptions, RequestParameters, SqliteRow } from './types.js';
|
|
10
12
|
export interface QueryParseResult {
|
|
11
13
|
/**
|
|
12
14
|
* True if parsed in some form, even if there are errors.
|
|
@@ -30,8 +32,8 @@ export declare class SqlBucketDescriptor {
|
|
|
30
32
|
addParameterQuery(sql: string, options: QueryParseOptions): QueryParseResult;
|
|
31
33
|
evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
|
|
32
34
|
evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
getBucketParameterQuerier(parameters: RequestParameters): BucketParameterQuerier;
|
|
36
|
+
getStaticBucketDescriptions(parameters: RequestParameters): BucketDescription[];
|
|
35
37
|
getSourceTables(): Set<TablePattern>;
|
|
36
38
|
tableSyncsData(table: SourceTableInterface): boolean;
|
|
37
39
|
tableSyncsParameters(table: SourceTableInterface): boolean;
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
import { mergeBucketParameterQueriers } from './BucketParameterQuerier.js';
|
|
1
2
|
import { IdSequence } from './IdSequence.js';
|
|
2
3
|
import { SqlDataQuery } from './SqlDataQuery.js';
|
|
3
4
|
import { SqlParameterQuery } from './SqlParameterQuery.js';
|
|
4
5
|
export class SqlBucketDescriptor {
|
|
6
|
+
idSequence;
|
|
7
|
+
name;
|
|
8
|
+
bucket_parameters;
|
|
5
9
|
constructor(name, idSequence) {
|
|
6
10
|
this.idSequence = idSequence;
|
|
7
|
-
/**
|
|
8
|
-
* source table -> queries
|
|
9
|
-
*/
|
|
10
|
-
this.data_queries = [];
|
|
11
|
-
this.parameter_queries = [];
|
|
12
|
-
this.global_parameter_queries = [];
|
|
13
|
-
this.parameterIdSequence = new IdSequence();
|
|
14
11
|
this.name = name;
|
|
15
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* source table -> queries
|
|
15
|
+
*/
|
|
16
|
+
data_queries = [];
|
|
17
|
+
parameter_queries = [];
|
|
18
|
+
global_parameter_queries = [];
|
|
19
|
+
parameterIdSequence = new IdSequence();
|
|
16
20
|
addDataQuery(sql, options) {
|
|
17
21
|
if (this.bucket_parameters == null) {
|
|
18
22
|
throw new Error('Bucket parameters must be defined');
|
|
@@ -66,20 +70,27 @@ export class SqlBucketDescriptor {
|
|
|
66
70
|
}
|
|
67
71
|
return results;
|
|
68
72
|
}
|
|
69
|
-
|
|
73
|
+
getBucketParameterQuerier(parameters) {
|
|
74
|
+
const staticBuckets = this.getStaticBucketDescriptions(parameters);
|
|
75
|
+
const staticQuerier = {
|
|
76
|
+
staticBuckets,
|
|
77
|
+
hasDynamicBuckets: false,
|
|
78
|
+
dynamicBucketDefinitions: new Set(),
|
|
79
|
+
queryDynamicBucketDescriptions: async () => []
|
|
80
|
+
};
|
|
81
|
+
if (this.parameter_queries.length == 0) {
|
|
82
|
+
return staticQuerier;
|
|
83
|
+
}
|
|
84
|
+
const dynamicQueriers = this.parameter_queries.map((query) => query.getBucketParameterQuerier(parameters));
|
|
85
|
+
return mergeBucketParameterQueriers([staticQuerier, ...dynamicQueriers]);
|
|
86
|
+
}
|
|
87
|
+
getStaticBucketDescriptions(parameters) {
|
|
70
88
|
let results = [];
|
|
71
89
|
for (let query of this.global_parameter_queries) {
|
|
72
|
-
results.push(...query.
|
|
90
|
+
results.push(...query.getStaticBucketDescriptions(parameters));
|
|
73
91
|
}
|
|
74
92
|
return results;
|
|
75
93
|
}
|
|
76
|
-
async queryBucketIds(options) {
|
|
77
|
-
let result = this.getStaticBucketIds(options.parameters);
|
|
78
|
-
for (let query of this.parameter_queries) {
|
|
79
|
-
result.push(...(await query.queryBucketIds(options)));
|
|
80
|
-
}
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
94
|
getSourceTables() {
|
|
84
95
|
let result = new Set();
|
|
85
96
|
for (let query of this.parameter_queries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"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"}
|
package/dist/SqlDataQuery.js
CHANGED
|
@@ -10,6 +10,7 @@ import { TablePattern } from './TablePattern.js';
|
|
|
10
10
|
import { TableQuerySchema } from './TableQuerySchema.js';
|
|
11
11
|
import { getBucketId, isSelectStatement } from './utils.js';
|
|
12
12
|
export class SqlDataQuery extends BaseSqlDataQuery {
|
|
13
|
+
filter;
|
|
13
14
|
static fromSql(descriptor_name, bucket_parameters, sql, options) {
|
|
14
15
|
const parsed = parse(sql, { locationTracking: true });
|
|
15
16
|
const rows = new SqlDataQuery();
|
|
@@ -96,13 +97,12 @@ export class SqlDataQuery extends BaseSqlDataQuery {
|
|
|
96
97
|
if (key.startsWith('_')) {
|
|
97
98
|
continue;
|
|
98
99
|
}
|
|
99
|
-
output[key]
|
|
100
|
+
output[key] ??= row[key];
|
|
100
101
|
}
|
|
101
102
|
},
|
|
102
103
|
getTypes(schema, into) {
|
|
103
|
-
var _a;
|
|
104
104
|
for (let column of schema.getColumns(alias)) {
|
|
105
|
-
into[
|
|
105
|
+
into[column.name] ??= column;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
});
|
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,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,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,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,OAAO,YAAa,SAAQ,gBAAgB;
|
|
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,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,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,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IAChD,MAAM,CAAwB;IAE9B,MAAM,CAAC,OAAO,CAAC,eAAuB,EAAE,iBAA2B,EAAE,GAAW,EAAE,OAAyB;QACzG,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,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,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtD,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,GAAW,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;QAEtD,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,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,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,gBAAgB,EAAE,CAAC,QAAQ,CAAC;YAC5B,YAAY,EAAE,CAAC,KAAK,CAAC;YACrB,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,eAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACzE,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,eAAgB,CAAC,MAAM,CAAC;YACnE,SAAS,CAAC,IAAI,IAAI,iBAAiB,CAAC,MAAM,EAC1C,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,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,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,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,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,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,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;wBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1B,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,EAAE,CAAC;4BAC5C,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,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC;oBAC/E,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,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAA2B,EAAE,GAAc;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAChD,WAAW,CAAC,IAAI,CAAC,eAAgB,EAAE,IAAI,CAAC,iBAAkB,EAAE,MAAM,CAAC,CACpE,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,0EAA0E;gBAC1E,+EAA+E;gBAC/E,6BAA6B;gBAC7B,oFAAoF;gBACpF,kFAAkF;gBAClF,YAAY;gBACZ,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5B,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChC,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,WAAW;oBAClB,EAAE,EAAE,EAAE;oBACN,IAAI;oBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;iBACA,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,8BAA8B,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { SelectedColumn } from 'pgsql-ast-parser';
|
|
2
|
+
import { BucketDescription, BucketPriority } from './BucketDescription.js';
|
|
3
|
+
import { BucketParameterQuerier } from './BucketParameterQuerier.js';
|
|
2
4
|
import { SqlRuleError } from './errors.js';
|
|
3
5
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
4
6
|
import { SqlTools } from './sql_filters.js';
|
|
5
7
|
import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
|
|
6
8
|
import { TablePattern } from './TablePattern.js';
|
|
7
|
-
import { EvaluatedParametersResult, InputParameter, ParameterMatchClause, ParameterValueClause,
|
|
9
|
+
import { EvaluatedParametersResult, InputParameter, ParameterMatchClause, ParameterValueClause, QueryParseOptions, RequestParameters, RowValueClause, SqliteJsonRow, SqliteJsonValue, SqliteRow } from './types.js';
|
|
8
10
|
/**
|
|
9
11
|
* Represents a parameter query, such as:
|
|
10
12
|
*
|
|
@@ -27,7 +29,11 @@ export declare class SqlParameterQuery {
|
|
|
27
29
|
* Example: SELECT *token_parameters.user_id*
|
|
28
30
|
*/
|
|
29
31
|
parameter_extractors: Record<string, ParameterValueClause>;
|
|
32
|
+
priority?: BucketPriority;
|
|
30
33
|
filter?: ParameterMatchClause;
|
|
34
|
+
/**
|
|
35
|
+
* Bucket definition name.
|
|
36
|
+
*/
|
|
31
37
|
descriptor_name?: string;
|
|
32
38
|
/** _Input_ token / user parameters */
|
|
33
39
|
input_parameters?: InputParameter[];
|
|
@@ -49,22 +55,14 @@ export declare class SqlParameterQuery {
|
|
|
49
55
|
/**
|
|
50
56
|
* Given partial parameter rows, turn into bucket ids.
|
|
51
57
|
*/
|
|
52
|
-
|
|
58
|
+
resolveBucketDescriptions(bucketParameters: SqliteJsonRow[], parameters: RequestParameters): BucketDescription[];
|
|
53
59
|
/**
|
|
54
60
|
* Given sync parameters, get lookups we need to perform on the database.
|
|
55
61
|
*
|
|
56
62
|
* Each lookup is [bucket definition name, parameter query index, ...lookup values]
|
|
57
63
|
*/
|
|
58
64
|
getLookups(parameters: RequestParameters): SqliteJsonValue[][];
|
|
59
|
-
|
|
60
|
-
* Given sync parameters (token and user parameters), return bucket ids.
|
|
61
|
-
*
|
|
62
|
-
* This is done in three steps:
|
|
63
|
-
* 1. Given the parameters, get lookups we need to perform on the database.
|
|
64
|
-
* 2. Perform the lookups, returning parameter sets (partial rows).
|
|
65
|
-
* 3. Given the parameter sets, resolve bucket ids.
|
|
66
|
-
*/
|
|
67
|
-
queryBucketIds(options: QueryBucketIdOptions): Promise<string[]>;
|
|
65
|
+
getBucketParameterQuerier(requestParameters: RequestParameters): BucketParameterQuerier;
|
|
68
66
|
get hasAuthenticatedBucketParameters(): boolean;
|
|
69
67
|
get hasAuthenticatedMatchClause(): boolean;
|
|
70
68
|
get usesUnauthenticatedRequestParameters(): boolean;
|