@powersync/service-sync-rules 0.27.0 → 0.29.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.
Files changed (101) hide show
  1. package/LICENSE +3 -3
  2. package/dist/BaseSqlDataQuery.d.ts +9 -1
  3. package/dist/BaseSqlDataQuery.js +44 -2
  4. package/dist/BaseSqlDataQuery.js.map +1 -1
  5. package/dist/BucketDescription.d.ts +16 -0
  6. package/dist/BucketParameterQuerier.d.ts +19 -3
  7. package/dist/BucketParameterQuerier.js.map +1 -1
  8. package/dist/BucketSource.d.ts +72 -0
  9. package/dist/BucketSource.js +6 -0
  10. package/dist/BucketSource.js.map +1 -0
  11. package/dist/ExpressionType.d.ts +1 -0
  12. package/dist/ExpressionType.js.map +1 -1
  13. package/dist/SourceTableInterface.d.ts +1 -1
  14. package/dist/SqlBucketDescriptor.d.ts +40 -8
  15. package/dist/SqlBucketDescriptor.js +78 -10
  16. package/dist/SqlBucketDescriptor.js.map +1 -1
  17. package/dist/SqlDataQuery.d.ts +4 -3
  18. package/dist/SqlDataQuery.js +10 -30
  19. package/dist/SqlDataQuery.js.map +1 -1
  20. package/dist/SqlParameterQuery.d.ts +4 -4
  21. package/dist/SqlParameterQuery.js +9 -4
  22. package/dist/SqlParameterQuery.js.map +1 -1
  23. package/dist/SqlSyncRules.d.ts +55 -7
  24. package/dist/SqlSyncRules.js +126 -47
  25. package/dist/SqlSyncRules.js.map +1 -1
  26. package/dist/StaticSchema.js +2 -2
  27. package/dist/StaticSchema.js.map +1 -1
  28. package/dist/StaticSqlParameterQuery.d.ts +2 -2
  29. package/dist/StaticSqlParameterQuery.js +3 -2
  30. package/dist/StaticSqlParameterQuery.js.map +1 -1
  31. package/dist/TablePattern.js +2 -2
  32. package/dist/TablePattern.js.map +1 -1
  33. package/dist/TableValuedFunctionSqlParameterQuery.d.ts +2 -2
  34. package/dist/TableValuedFunctionSqlParameterQuery.js +11 -10
  35. package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
  36. package/dist/TableValuedFunctions.d.ts +2 -2
  37. package/dist/TableValuedFunctions.js +38 -35
  38. package/dist/TableValuedFunctions.js.map +1 -1
  39. package/dist/compatibility.d.ts +39 -0
  40. package/dist/compatibility.js +54 -0
  41. package/dist/compatibility.js.map +1 -0
  42. package/dist/events/SqlEventDescriptor.d.ts +3 -1
  43. package/dist/events/SqlEventDescriptor.js +5 -3
  44. package/dist/events/SqlEventDescriptor.js.map +1 -1
  45. package/dist/events/SqlEventSourceQuery.d.ts +2 -1
  46. package/dist/events/SqlEventSourceQuery.js +3 -2
  47. package/dist/events/SqlEventSourceQuery.js.map +1 -1
  48. package/dist/index.d.ts +7 -0
  49. package/dist/index.js +7 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/json_schema.js +54 -1
  52. package/dist/json_schema.js.map +1 -1
  53. package/dist/request_functions.d.ts +24 -4
  54. package/dist/request_functions.js +68 -17
  55. package/dist/request_functions.js.map +1 -1
  56. package/dist/schema-generators/SchemaGenerator.js +2 -12
  57. package/dist/schema-generators/SchemaGenerator.js.map +1 -1
  58. package/dist/sql_filters.d.ts +25 -2
  59. package/dist/sql_filters.js +223 -119
  60. package/dist/sql_filters.js.map +1 -1
  61. package/dist/sql_functions.d.ts +13 -31
  62. package/dist/sql_functions.js +191 -114
  63. package/dist/sql_functions.js.map +1 -1
  64. package/dist/sql_support.d.ts +20 -0
  65. package/dist/sql_support.js +67 -14
  66. package/dist/sql_support.js.map +1 -1
  67. package/dist/streams/filter.d.ts +148 -0
  68. package/dist/streams/filter.js +426 -0
  69. package/dist/streams/filter.js.map +1 -0
  70. package/dist/streams/from_sql.d.ts +4 -0
  71. package/dist/streams/from_sql.js +375 -0
  72. package/dist/streams/from_sql.js.map +1 -0
  73. package/dist/streams/functions.d.ts +2 -0
  74. package/dist/streams/functions.js +38 -0
  75. package/dist/streams/functions.js.map +1 -0
  76. package/dist/streams/parameter.d.ts +67 -0
  77. package/dist/streams/parameter.js +2 -0
  78. package/dist/streams/parameter.js.map +1 -0
  79. package/dist/streams/stream.d.ts +40 -0
  80. package/dist/streams/stream.js +139 -0
  81. package/dist/streams/stream.js.map +1 -0
  82. package/dist/streams/utils.d.ts +1 -0
  83. package/dist/streams/utils.js +13 -0
  84. package/dist/streams/utils.js.map +1 -0
  85. package/dist/streams/variant.d.ts +122 -0
  86. package/dist/streams/variant.js +266 -0
  87. package/dist/streams/variant.js.map +1 -0
  88. package/dist/types/custom_sqlite_value.d.ts +38 -0
  89. package/dist/types/custom_sqlite_value.js +50 -0
  90. package/dist/types/custom_sqlite_value.js.map +1 -0
  91. package/dist/types/time.d.ts +33 -0
  92. package/dist/types/time.js +67 -0
  93. package/dist/types/time.js.map +1 -0
  94. package/dist/types.d.ts +53 -10
  95. package/dist/types.js +28 -2
  96. package/dist/types.js.map +1 -1
  97. package/dist/utils.d.ts +9 -6
  98. package/dist/utils.js +42 -17
  99. package/dist/utils.js.map +1 -1
  100. package/package.json +4 -4
  101. package/schema/sync_rules.json +80 -2
package/LICENSE CHANGED
@@ -1,12 +1,12 @@
1
- # Functional Source License, Version 1.1, Apache 2.0 Future License
1
+ # Functional Source License, Version 1.1, ALv2 Future License
2
2
 
3
3
  ## Abbreviation
4
4
 
5
- FSL-1.1-Apache-2.0
5
+ FSL-1.1-ALv2
6
6
 
7
7
  ## Notice
8
8
 
9
- Copyright 2023-2024 Journey Mobile, Inc.
9
+ Copyright 2023-2025 Journey Mobile, Inc.
10
10
 
11
11
  ## Terms and Conditions
12
12
 
@@ -4,11 +4,17 @@ import { ColumnDefinition } from './ExpressionType.js';
4
4
  import { SourceTableInterface } from './SourceTableInterface.js';
5
5
  import { SqlTools } from './sql_filters.js';
6
6
  import { TablePattern } from './TablePattern.js';
7
- import { QueryParameters, QuerySchema, SourceSchema, SourceSchemaTable, SqliteJsonRow, SqliteRow } from './types.js';
7
+ import { BucketIdTransformer, EvaluationResult, QueryParameters, QuerySchema, SourceSchema, SourceSchemaTable, SqliteJsonRow, SqliteRow } from './types.js';
8
8
  export interface RowValueExtractor {
9
9
  extract(tables: QueryParameters, into: SqliteRow): void;
10
10
  getTypes(schema: QuerySchema, into: Record<string, ColumnDefinition>): void;
11
11
  }
12
+ export interface EvaluateRowOptions {
13
+ table: SourceTableInterface;
14
+ row: SqliteRow;
15
+ bucketIds: (params: QueryParameters) => string[];
16
+ bucketIdTransformer: BucketIdTransformer | null;
17
+ }
12
18
  export interface BaseSqlDataQueryOptions {
13
19
  sourceTable: TablePattern;
14
20
  table: string;
@@ -71,6 +77,8 @@ export declare class BaseSqlDataQuery {
71
77
  name: string;
72
78
  columns: ColumnDefinition[];
73
79
  }[];
80
+ resolveResultSets(schema: SourceSchema, tables: Record<string, Record<string, ColumnDefinition>>): void;
81
+ evaluateRowWithOptions(options: Omit<EvaluateRowOptions, 'bucketIdTransformer'>): EvaluationResult[];
74
82
  protected transformRow(tables: QueryParameters): SqliteJsonRow;
75
83
  protected getColumnOutputsFor(schemaTable: SourceSchemaTable, output: Record<string, ColumnDefinition>): void;
76
84
  }
@@ -1,4 +1,5 @@
1
1
  import { filterJsonRow } from './utils.js';
2
+ import { castAsText } from './sql_functions.js';
2
3
  export class BaseSqlDataQuery {
3
4
  /**
4
5
  * Source table or table pattern.
@@ -58,7 +59,7 @@ export class BaseSqlDataQuery {
58
59
  if (this.sourceTable.isWildcard) {
59
60
  return {
60
61
  ...row,
61
- _table_suffix: this.sourceTable.suffix(table.table)
62
+ _table_suffix: this.sourceTable.suffix(table.name)
62
63
  };
63
64
  }
64
65
  else {
@@ -90,7 +91,7 @@ export class BaseSqlDataQuery {
90
91
  let output = {};
91
92
  this.getColumnOutputsFor(schemaTable, output);
92
93
  result.push({
93
- name: this.getOutputName(schemaTable.table),
94
+ name: this.getOutputName(schemaTable.name),
94
95
  columns: Object.values(output)
95
96
  });
96
97
  }
@@ -108,6 +109,47 @@ export class BaseSqlDataQuery {
108
109
  }
109
110
  return result;
110
111
  }
112
+ resolveResultSets(schema, tables) {
113
+ const outTables = this.getColumnOutputs(schema);
114
+ for (let table of outTables) {
115
+ tables[table.name] ??= {};
116
+ for (let column of table.columns) {
117
+ if (column.name != 'id') {
118
+ tables[table.name][column.name] ??= column;
119
+ }
120
+ }
121
+ }
122
+ }
123
+ evaluateRowWithOptions(options) {
124
+ try {
125
+ const { table, row, bucketIds } = options;
126
+ const tables = { [this.table]: this.addSpecialParameters(table, row) };
127
+ const resolvedBucketIds = bucketIds(tables);
128
+ const data = this.transformRow(tables);
129
+ let id = data.id;
130
+ if (typeof id != 'string') {
131
+ // While an explicit cast would be better, this covers against very common
132
+ // issues when initially testing out sync, for example when the id column is an
133
+ // auto-incrementing integer.
134
+ // If there is no id column, we use a blank id. This will result in the user syncing
135
+ // a single arbitrary row for this table - better than just not being able to sync
136
+ // anything.
137
+ id = castAsText(id) ?? '';
138
+ }
139
+ const outputTable = this.getOutputName(table.name);
140
+ return resolvedBucketIds.map((bucketId) => {
141
+ return {
142
+ bucket: bucketId,
143
+ table: outputTable,
144
+ id: id,
145
+ data
146
+ };
147
+ });
148
+ }
149
+ catch (e) {
150
+ return [{ error: e.message ?? `Evaluating data query failed` }];
151
+ }
152
+ }
111
153
  transformRow(tables) {
112
154
  let result = {};
113
155
  for (let extractor of this.extractors) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseSqlDataQuery.js","sourceRoot":"","sources":["../src/BaseSqlDataQuery.ts"],"names":[],"mappings":"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"}
@@ -25,3 +25,19 @@ export interface BucketDescription {
25
25
  */
26
26
  priority: BucketPriority;
27
27
  }
28
+ /**
29
+ * A bucket that was resolved to a specific request including stream subscriptions.
30
+ *
31
+ * This includes information on why the bucket has been included in a checkpoint subset
32
+ * shown to clients.
33
+ */
34
+ export interface ResolvedBucket extends BucketDescription {
35
+ /**
36
+ * The name of the sync rule or stream definition from which the bucket is derived.
37
+ */
38
+ definition: string;
39
+ inclusion_reasons: BucketInclusionReason[];
40
+ }
41
+ export type BucketInclusionReason = 'default' | {
42
+ subscription: number;
43
+ };
@@ -1,4 +1,5 @@
1
- import { BucketDescription } from './BucketDescription.js';
1
+ import { ResolvedBucket } from './BucketDescription.js';
2
+ import { RequestedStream } from './SqlSyncRules.js';
2
3
  import { RequestParameters, SqliteJsonRow, SqliteJsonValue } from './types.js';
3
4
  /**
4
5
  * Represents a set of parameter queries for a specific request.
@@ -12,7 +13,7 @@ export interface BucketParameterQuerier {
12
13
  * select request.user_id() as user_id()
13
14
  * select value as project_id from json_each(request.jwt() -> 'project_ids')
14
15
  */
15
- readonly staticBuckets: BucketDescription[];
16
+ readonly staticBuckets: ResolvedBucket[];
16
17
  /**
17
18
  * True if there are dynamic buckets, meaning queryDynamicBucketDescriptions() should be used.
18
19
  *
@@ -31,7 +32,22 @@ export interface BucketParameterQuerier {
31
32
  *
32
33
  * select id as user_id from users where users.id = request.user_id()
33
34
  */
34
- queryDynamicBucketDescriptions(source: ParameterLookupSource): Promise<BucketDescription[]>;
35
+ queryDynamicBucketDescriptions(source: ParameterLookupSource): Promise<ResolvedBucket[]>;
36
+ }
37
+ /**
38
+ * An error that occurred while trying to resolve the bucket ids a request should have access to.
39
+ *
40
+ * A common scenario that could cause this to happen is when parameters need to have a certain structure. For instance,
41
+ * `... WHERE id IN stream.parameters -> 'ids'` is unresolvable when `ids` is not set to a JSON array.
42
+ */
43
+ export interface QuerierError {
44
+ descriptor: string;
45
+ subscription?: RequestedStream;
46
+ message: string;
47
+ }
48
+ export interface PendingQueriers {
49
+ queriers: BucketParameterQuerier[];
50
+ errors: QuerierError[];
35
51
  }
36
52
  export interface ParameterLookupSource {
37
53
  getParameterSets: (lookups: ParameterLookup[]) => Promise<SqliteJsonRow[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"BucketParameterQuerier.js","sourceRoot":"","sources":["../src/BucketParameterQuerier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA+CrD,MAAM,UAAU,4BAA4B,CAAC,QAAkC;IAC7E,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/E,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACvD,iBAAiB,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC;QACnD,qBAAqB,EAAE,qBAAqB;QAC5C,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;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,kEAAkE;IACzD,MAAM,CAAoB;IAEnC,MAAM,CAAC,UAAU,CAAC,oBAA4B,EAAE,UAAkB,EAAE,MAAyB;QAC3F,OAAO,IAAI,eAAe,CAAC,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;OAGG;IACH,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"BucketParameterQuerier.js","sourceRoot":"","sources":["../src/BucketParameterQuerier.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAgErD,MAAM,UAAU,4BAA4B,CAAC,QAAkC;IAC7E,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/E,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACvD,iBAAiB,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC;QACnD,qBAAqB,EAAE,qBAAqB;QAC5C,KAAK,CAAC,8BAA8B,CAAC,MAA6B;YAChE,IAAI,OAAO,GAAqB,EAAE,CAAC;YACnC,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;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,kEAAkE;IACzD,MAAM,CAAoB;IAEnC,MAAM,CAAC,UAAU,CAAC,oBAA4B,EAAE,UAAkB,EAAE,MAAyB;QAC3F,OAAO,IAAI,eAAe,CAAC,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;OAGG;IACH,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,72 @@
1
+ import { PendingQueriers } from './BucketParameterQuerier.js';
2
+ import { ColumnDefinition } from './ExpressionType.js';
3
+ import { SourceTableInterface } from './SourceTableInterface.js';
4
+ import { GetQuerierOptions } from './SqlSyncRules.js';
5
+ import { TablePattern } from './TablePattern.js';
6
+ import { EvaluatedParametersResult, EvaluateRowOptions, EvaluationResult, SourceSchema, SqliteInputRow } from './types.js';
7
+ /**
8
+ * An interface declaring
9
+ *
10
+ * - which buckets the sync service should create when processing change streams from the database.
11
+ * - how data in source tables maps to data in buckets (e.g. when we're not selecting all columns).
12
+ * - which buckets a given connection has access to.
13
+ *
14
+ * There are two ways to define bucket sources: Via sync rules made up of parameter and data queries, and via stream
15
+ * definitions that only consist of a single query.
16
+ */
17
+ export interface BucketSource {
18
+ readonly name: string;
19
+ readonly type: BucketSourceType;
20
+ readonly subscribedToByDefault: boolean;
21
+ /**
22
+ * Given a row in a source table that affects sync parameters, returns a structure to index which buckets rows should
23
+ * be associated with.
24
+ *
25
+ * The returned {@link ParameterLookup} can be referenced by {@link pushBucketParameterQueriers} to allow the storage
26
+ * system to find buckets.
27
+ */
28
+ evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteInputRow): EvaluatedParametersResult[];
29
+ /**
30
+ * Given a row as it appears in a table that affects sync data, return buckets, logical table names and transformed
31
+ * data for rows to add to buckets.
32
+ */
33
+ evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
34
+ /**
35
+ * Reports {@link BucketParameterQuerier}s resolving buckets that a specific stream request should have access to.
36
+ *
37
+ * @param result The target array to insert queriers and errors into.
38
+ * @param options Options, including parameters that may affect the buckets loaded by this source.
39
+ */
40
+ pushBucketParameterQueriers(result: PendingQueriers, options: GetQuerierOptions): void;
41
+ /**
42
+ * Whether {@link pushBucketParameterQueriers} may include a querier where
43
+ * {@link BucketParameterQuerier.hasDynamicBuckets} is true.
44
+ *
45
+ * This is mostly used for testing.
46
+ */
47
+ hasDynamicBucketQueries(): boolean;
48
+ getSourceTables(): Set<TablePattern>;
49
+ /** Whether the table possibly affects the buckets resolved by this source. */
50
+ tableSyncsParameters(table: SourceTableInterface): boolean;
51
+ /** Whether the table possibly affects the contents of buckets resolved by this source. */
52
+ tableSyncsData(table: SourceTableInterface): boolean;
53
+ /**
54
+ * Given a static schema, infer all logical tables and associated columns that appear in buckets defined by this
55
+ * source.
56
+ *
57
+ * This is use to generate the client-side schema.
58
+ */
59
+ resolveResultSets(schema: SourceSchema, tables: Record<string, Record<string, ColumnDefinition>>): void;
60
+ debugWriteOutputTables(result: Record<string, {
61
+ query: string;
62
+ }[]>): void;
63
+ debugRepresentation(): any;
64
+ }
65
+ export declare enum BucketSourceType {
66
+ SYNC_RULE = 0,
67
+ SYNC_STREAM = 1
68
+ }
69
+ export type ResultSetDescription = {
70
+ name: string;
71
+ columns: ColumnDefinition[];
72
+ };
@@ -0,0 +1,6 @@
1
+ export var BucketSourceType;
2
+ (function (BucketSourceType) {
3
+ BucketSourceType[BucketSourceType["SYNC_RULE"] = 0] = "SYNC_RULE";
4
+ BucketSourceType[BucketSourceType["SYNC_STREAM"] = 1] = "SYNC_STREAM";
5
+ })(BucketSourceType || (BucketSourceType = {}));
6
+ //# sourceMappingURL=BucketSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BucketSource.js","sourceRoot":"","sources":["../src/BucketSource.ts"],"names":[],"mappings":"AAiFA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iEAAS,CAAA;IACT,qEAAW,CAAA;AACb,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
@@ -4,6 +4,7 @@ export declare const TYPE_TEXT = 2;
4
4
  export declare const TYPE_INTEGER = 4;
5
5
  export declare const TYPE_REAL = 8;
6
6
  export type SqliteType = 'null' | 'blob' | 'text' | 'integer' | 'real' | 'numeric';
7
+ export type SqliteValueType = 'null' | 'blob' | 'text' | 'integer' | 'real';
7
8
  export interface ColumnDefinition {
8
9
  name: string;
9
10
  type: ExpressionType;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpressionType.js","sourceRoot":"","sources":["../src/ExpressionType.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export interface SourceTableInterface {
2
2
  readonly connectionTag: string;
3
3
  readonly schema: string;
4
- readonly table: string;
4
+ readonly name: string;
5
5
  }
@@ -1,15 +1,18 @@
1
- import { BucketDescription } from './BucketDescription.js';
2
- import { BucketParameterQuerier } from './BucketParameterQuerier.js';
1
+ import { BucketInclusionReason, ResolvedBucket } from './BucketDescription.js';
2
+ import { BucketParameterQuerier, PendingQueriers } from './BucketParameterQuerier.js';
3
+ import { BucketSource, BucketSourceType } from './BucketSource.js';
4
+ import { ColumnDefinition } from './ExpressionType.js';
3
5
  import { IdSequence } from './IdSequence.js';
4
6
  import { SourceTableInterface } from './SourceTableInterface.js';
5
7
  import { SqlDataQuery } from './SqlDataQuery.js';
6
8
  import { SqlParameterQuery } from './SqlParameterQuery.js';
7
- import { SyncRulesOptions } from './SqlSyncRules.js';
9
+ import { GetQuerierOptions, SyncRulesOptions } from './SqlSyncRules.js';
8
10
  import { StaticSqlParameterQuery } from './StaticSqlParameterQuery.js';
9
11
  import { TablePattern } from './TablePattern.js';
10
12
  import { TableValuedFunctionSqlParameterQuery } from './TableValuedFunctionSqlParameterQuery.js';
11
13
  import { SqlRuleError } from './errors.js';
12
- import { EvaluatedParametersResult, EvaluateRowOptions, EvaluationResult, QueryParseOptions, RequestParameters, SqliteRow } from './types.js';
14
+ import { CompatibilityContext } from './compatibility.js';
15
+ import { BucketIdTransformer, EvaluatedParametersResult, EvaluateRowOptions, EvaluationResult, QueryParseOptions, RequestParameters, SourceSchema, SqliteRow } from './types.js';
13
16
  export interface QueryParseResult {
14
17
  /**
15
18
  * True if parsed in some form, even if there are errors.
@@ -17,10 +20,12 @@ export interface QueryParseResult {
17
20
  parsed: boolean;
18
21
  errors: SqlRuleError[];
19
22
  }
20
- export declare class SqlBucketDescriptor {
23
+ export declare class SqlBucketDescriptor implements BucketSource {
21
24
  name: string;
22
25
  bucketParameters?: string[];
23
26
  constructor(name: string);
27
+ get type(): BucketSourceType;
28
+ get subscribedToByDefault(): boolean;
24
29
  /**
25
30
  * source table -> queries
26
31
  */
@@ -28,14 +33,41 @@ export declare class SqlBucketDescriptor {
28
33
  parameterQueries: SqlParameterQuery[];
29
34
  globalParameterQueries: (StaticSqlParameterQuery | TableValuedFunctionSqlParameterQuery)[];
30
35
  parameterIdSequence: IdSequence;
31
- addDataQuery(sql: string, options: SyncRulesOptions): QueryParseResult;
36
+ addDataQuery(sql: string, options: SyncRulesOptions, compatibility: CompatibilityContext): QueryParseResult;
32
37
  addParameterQuery(sql: string, options: QueryParseOptions): QueryParseResult;
33
38
  evaluateRow(options: EvaluateRowOptions): EvaluationResult[];
34
39
  evaluateParameterRow(sourceTable: SourceTableInterface, row: SqliteRow): EvaluatedParametersResult[];
35
- getBucketParameterQuerier(parameters: RequestParameters): BucketParameterQuerier;
36
- getStaticBucketDescriptions(parameters: RequestParameters): BucketDescription[];
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[];
37
46
  hasDynamicBucketQueries(): boolean;
38
47
  getSourceTables(): Set<TablePattern>;
48
+ private bucketInclusionReason;
39
49
  tableSyncsData(table: SourceTableInterface): boolean;
40
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
+ debugRepresentation(): {
56
+ name: string;
57
+ type: string;
58
+ bucket_parameters: string[] | undefined;
59
+ global_parameter_queries: {
60
+ sql: string;
61
+ }[];
62
+ parameter_queries: {
63
+ sql: string;
64
+ table: TablePattern;
65
+ input_parameters: import("./types.js").InputParameter[];
66
+ }[];
67
+ data_queries: {
68
+ sql: string;
69
+ table: TablePattern;
70
+ columns: string[];
71
+ }[];
72
+ };
41
73
  }
@@ -1,4 +1,5 @@
1
1
  import { mergeBucketParameterQueriers } from './BucketParameterQuerier.js';
2
+ import { BucketSourceType } from './BucketSource.js';
2
3
  import { IdSequence } from './IdSequence.js';
3
4
  import { SqlDataQuery } from './SqlDataQuery.js';
4
5
  import { SqlParameterQuery } from './SqlParameterQuery.js';
@@ -8,6 +9,12 @@ export class SqlBucketDescriptor {
8
9
  constructor(name) {
9
10
  this.name = name;
10
11
  }
12
+ get type() {
13
+ return BucketSourceType.SYNC_RULE;
14
+ }
15
+ get subscribedToByDefault() {
16
+ return true;
17
+ }
11
18
  /**
12
19
  * source table -> queries
13
20
  */
@@ -15,11 +22,11 @@ export class SqlBucketDescriptor {
15
22
  parameterQueries = [];
16
23
  globalParameterQueries = [];
17
24
  parameterIdSequence = new IdSequence();
18
- addDataQuery(sql, options) {
25
+ addDataQuery(sql, options, compatibility) {
19
26
  if (this.bucketParameters == null) {
20
27
  throw new Error('Bucket parameters must be defined');
21
28
  }
22
- const dataRows = SqlDataQuery.fromSql(this.name, this.bucketParameters, sql, options);
29
+ const dataRows = SqlDataQuery.fromSql(this.name, this.bucketParameters, sql, options, compatibility);
23
30
  this.dataQueries.push(dataRows);
24
31
  return {
25
32
  parsed: true,
@@ -53,7 +60,7 @@ export class SqlBucketDescriptor {
53
60
  if (!query.applies(options.sourceTable)) {
54
61
  continue;
55
62
  }
56
- results.push(...query.evaluateRow(options.sourceTable, options.record));
63
+ results.push(...query.evaluateRow(options.sourceTable, options.record, options.bucketIdTransformer));
57
64
  }
58
65
  return results;
59
66
  }
@@ -66,24 +73,40 @@ export class SqlBucketDescriptor {
66
73
  }
67
74
  return results;
68
75
  }
69
- getBucketParameterQuerier(parameters) {
70
- const staticBuckets = this.getStaticBucketDescriptions(parameters);
76
+ /**
77
+ * @deprecated Use `pushBucketParameterQueriers` instead and merge at the top-level.
78
+ */
79
+ getBucketParameterQuerier(options) {
80
+ const queriers = [];
81
+ this.pushBucketParameterQueriers({ queriers, errors: [] }, options);
82
+ return mergeBucketParameterQueriers(queriers);
83
+ }
84
+ pushBucketParameterQueriers(result, options) {
85
+ const reasons = [this.bucketInclusionReason()];
86
+ const staticBuckets = this.getStaticBucketDescriptions(options.globalParameters, reasons, options.bucketIdTransformer);
71
87
  const staticQuerier = {
72
88
  staticBuckets,
73
89
  hasDynamicBuckets: false,
74
90
  parameterQueryLookups: [],
75
91
  queryDynamicBucketDescriptions: async () => []
76
92
  };
93
+ result.queriers.push(staticQuerier);
77
94
  if (this.parameterQueries.length == 0) {
78
- return staticQuerier;
95
+ return;
79
96
  }
80
- const dynamicQueriers = this.parameterQueries.map((query) => query.getBucketParameterQuerier(parameters));
81
- return mergeBucketParameterQueriers([staticQuerier, ...dynamicQueriers]);
97
+ const dynamicQueriers = this.parameterQueries.map((query) => query.getBucketParameterQuerier(options.globalParameters, reasons, options.bucketIdTransformer));
98
+ result.queriers.push(...dynamicQueriers);
82
99
  }
83
- getStaticBucketDescriptions(parameters) {
100
+ getStaticBucketDescriptions(parameters, reasons, transformer) {
84
101
  let results = [];
85
102
  for (let query of this.globalParameterQueries) {
86
- results.push(...query.getStaticBucketDescriptions(parameters));
103
+ for (const desc of query.getStaticBucketDescriptions(parameters, transformer)) {
104
+ results.push({
105
+ ...desc,
106
+ definition: this.name,
107
+ inclusion_reasons: reasons
108
+ });
109
+ }
87
110
  }
88
111
  return results;
89
112
  }
@@ -101,6 +124,9 @@ export class SqlBucketDescriptor {
101
124
  // Note: No physical tables for global_parameter_queries
102
125
  return result;
103
126
  }
127
+ bucketInclusionReason() {
128
+ return 'default';
129
+ }
104
130
  tableSyncsData(table) {
105
131
  for (let query of this.dataQueries) {
106
132
  if (query.applies(table)) {
@@ -117,5 +143,47 @@ export class SqlBucketDescriptor {
117
143
  }
118
144
  return false;
119
145
  }
146
+ resolveResultSets(schema, tables) {
147
+ for (let query of this.dataQueries) {
148
+ query.resolveResultSets(schema, tables);
149
+ }
150
+ }
151
+ debugWriteOutputTables(result) {
152
+ for (let q of this.dataQueries) {
153
+ result[q.table] ??= [];
154
+ const r = {
155
+ query: q.sql
156
+ };
157
+ result[q.table].push(r);
158
+ }
159
+ }
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
+ }
120
188
  }
121
189
  //# sourceMappingURL=SqlBucketDescriptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqlBucketDescriptor.js","sourceRoot":"","sources":["../src/SqlBucketDescriptor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { BaseSqlDataQuery, BaseSqlDataQueryOptions } from './BaseSqlDataQuery.js';
2
2
  import { SourceTableInterface } from './SourceTableInterface.js';
3
3
  import { SyncRulesOptions } from './SqlSyncRules.js';
4
- import { EvaluationResult, ParameterMatchClause, SqliteRow } from './types.js';
4
+ import { BucketIdTransformer, EvaluationResult, ParameterMatchClause, SqliteRow } from './types.js';
5
+ import { CompatibilityContext } from './compatibility.js';
5
6
  export interface SqlDataQueryOptions extends BaseSqlDataQueryOptions {
6
7
  filter: ParameterMatchClause;
7
8
  }
8
9
  export declare class SqlDataQuery extends BaseSqlDataQuery {
9
- static fromSql(descriptorName: string, bucketParameters: string[], sql: string, options: SyncRulesOptions): SqlDataQuery;
10
+ static fromSql(descriptorName: string, bucketParameters: string[], sql: string, options: SyncRulesOptions, compatibility: CompatibilityContext): SqlDataQuery;
10
11
  /**
11
12
  * The query WHERE clause.
12
13
  *
@@ -16,5 +17,5 @@ export declare class SqlDataQuery extends BaseSqlDataQuery {
16
17
  */
17
18
  readonly filter: ParameterMatchClause;
18
19
  constructor(options: SqlDataQueryOptions);
19
- evaluateRow(table: SourceTableInterface, row: SqliteRow): EvaluationResult[];
20
+ evaluateRow(table: SourceTableInterface, row: SqliteRow, bucketIdTransformer: BucketIdTransformer): EvaluationResult[];
20
21
  }