@powersync/service-sync-rules 0.0.0-dev-20250317122913 → 0.0.0-dev-20250730114043
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 +53 -12
- package/dist/BaseSqlDataQuery.js +49 -9
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +1 -1
- package/dist/BucketDescription.js +1 -1
- package/dist/BucketDescription.js.map +1 -1
- package/dist/SourceTableInterface.d.ts +1 -1
- package/dist/SqlBucketDescriptor.d.ts +6 -6
- package/dist/SqlBucketDescriptor.js +24 -28
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +14 -3
- package/dist/SqlDataQuery.js +41 -27
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +82 -26
- package/dist/SqlParameterQuery.js +135 -77
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +3 -5
- package/dist/SqlSyncRules.js +20 -23
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSchema.js +2 -2
- package/dist/StaticSchema.js.map +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +50 -15
- package/dist/StaticSqlParameterQuery.js +74 -36
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TablePattern.js +2 -2
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +70 -17
- package/dist/TableValuedFunctionSqlParameterQuery.js +98 -43
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/events/SqlEventDescriptor.d.ts +2 -4
- package/dist/events/SqlEventDescriptor.js +8 -11
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +2 -2
- package/dist/events/SqlEventSourceQuery.js +24 -17
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/index.d.ts +2 -6
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/request_functions.js +3 -3
- package/dist/request_functions.js.map +1 -1
- package/dist/{DartSchemaGenerator.d.ts → schema-generators/DartSchemaGenerator.d.ts} +2 -2
- package/dist/{DartSchemaGenerator.js → schema-generators/DartSchemaGenerator.js} +4 -19
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -0
- package/dist/schema-generators/DotNetSchemaGenerator.d.ts +13 -0
- package/dist/schema-generators/DotNetSchemaGenerator.js +67 -0
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -0
- package/dist/{JsLegacySchemaGenerator.d.ts → schema-generators/JsLegacySchemaGenerator.d.ts} +2 -2
- package/dist/{JsLegacySchemaGenerator.js → schema-generators/JsLegacySchemaGenerator.js} +1 -1
- package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -0
- package/dist/schema-generators/KotlinSchemaGenerator.d.ts +12 -0
- package/dist/schema-generators/KotlinSchemaGenerator.js +46 -0
- package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -0
- package/dist/{SchemaGenerator.d.ts → schema-generators/SchemaGenerator.d.ts} +8 -3
- package/dist/schema-generators/SchemaGenerator.js +45 -0
- package/dist/schema-generators/SchemaGenerator.js.map +1 -0
- package/dist/schema-generators/SwiftSchemaGenerator.d.ts +12 -0
- package/dist/schema-generators/SwiftSchemaGenerator.js +44 -0
- package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -0
- package/dist/{TsSchemaGenerator.d.ts → schema-generators/TsSchemaGenerator.d.ts} +2 -2
- package/dist/{TsSchemaGenerator.js → schema-generators/TsSchemaGenerator.js} +1 -1
- package/dist/schema-generators/TsSchemaGenerator.js.map +1 -0
- package/dist/{generators.d.ts → schema-generators/generators.d.ts} +9 -3
- package/dist/schema-generators/generators.js +17 -0
- package/dist/schema-generators/generators.js.map +1 -0
- package/dist/schema-generators/schema-generators.d.ts +8 -0
- package/dist/schema-generators/schema-generators.js +9 -0
- package/dist/schema-generators/schema-generators.js.map +1 -0
- package/dist/sql_filters.d.ts +12 -12
- package/dist/sql_filters.js +24 -24
- package/dist/sql_filters.js.map +1 -1
- package/dist/types.d.ts +10 -12
- package/dist/types.js +14 -14
- package/dist/types.js.map +1 -1
- package/package.json +4 -5
- package/dist/DartSchemaGenerator.js.map +0 -1
- package/dist/JsLegacySchemaGenerator.js.map +0 -1
- package/dist/SchemaGenerator.js +0 -25
- package/dist/SchemaGenerator.js.map +0 -1
- package/dist/TsSchemaGenerator.js.map +0 -1
- package/dist/generators.js +0 -11
- package/dist/generators.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/DartSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
3
|
+
import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
|
|
4
|
+
export declare class DotNetSchemaGenerator extends SchemaGenerator {
|
|
5
|
+
readonly key = "dotnet";
|
|
6
|
+
readonly label = ".Net";
|
|
7
|
+
readonly mediaType = "text/x-csharp";
|
|
8
|
+
readonly fileName = "Schema.cs";
|
|
9
|
+
generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
10
|
+
private toUpperCaseFirstLetter;
|
|
11
|
+
private generateTable;
|
|
12
|
+
private generateColumn;
|
|
13
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
|
|
2
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
|
+
export class DotNetSchemaGenerator extends SchemaGenerator {
|
|
4
|
+
key = 'dotnet';
|
|
5
|
+
label = '.Net';
|
|
6
|
+
mediaType = 'text/x-csharp';
|
|
7
|
+
fileName = 'Schema.cs';
|
|
8
|
+
generate(source, schema, options) {
|
|
9
|
+
const tables = super.getAllTables(source, schema);
|
|
10
|
+
return `using PowerSync.Common.DB.Schema;
|
|
11
|
+
|
|
12
|
+
class AppSchema
|
|
13
|
+
{
|
|
14
|
+
${tables.map((table) => this.generateTable(table.name, table.columns, options)).join('\n\n ')}
|
|
15
|
+
|
|
16
|
+
public static Schema PowerSyncSchema = new Schema(new Dictionary<string, Table>
|
|
17
|
+
{
|
|
18
|
+
${tables.map((table) => `{"${table.name}", ${this.toUpperCaseFirstLetter(table.name)}}`).join(',\n ')}
|
|
19
|
+
});
|
|
20
|
+
}`;
|
|
21
|
+
}
|
|
22
|
+
toUpperCaseFirstLetter(str) {
|
|
23
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
24
|
+
}
|
|
25
|
+
generateTable(name, columns, options) {
|
|
26
|
+
const generated = columns.map((c, i) => {
|
|
27
|
+
const last = i === columns.length - 1;
|
|
28
|
+
const base = this.generateColumn(c);
|
|
29
|
+
let withFormatting;
|
|
30
|
+
if (last) {
|
|
31
|
+
withFormatting = ` ${base}`;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
withFormatting = ` ${base},`;
|
|
35
|
+
}
|
|
36
|
+
if (options?.includeTypeComments && c.originalType != null) {
|
|
37
|
+
return `${withFormatting} // ${c.originalType}`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return withFormatting;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return `public static Table ${this.toUpperCaseFirstLetter(name)} = new Table(new Dictionary<string, ColumnType>
|
|
44
|
+
{
|
|
45
|
+
${generated.join('\n ')}
|
|
46
|
+
});`;
|
|
47
|
+
}
|
|
48
|
+
generateColumn(column) {
|
|
49
|
+
return `{ "${column.name}", ${cSharpColumnType(column)} }`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const cSharpColumnType = (def) => {
|
|
53
|
+
const t = def.type;
|
|
54
|
+
if (t.typeFlags & TYPE_TEXT) {
|
|
55
|
+
return 'ColumnType.TEXT';
|
|
56
|
+
}
|
|
57
|
+
else if (t.typeFlags & TYPE_REAL) {
|
|
58
|
+
return 'ColumnType.REAL';
|
|
59
|
+
}
|
|
60
|
+
else if (t.typeFlags & TYPE_INTEGER) {
|
|
61
|
+
return 'ColumnType.INTEGER';
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return 'ColumnType.TEXT';
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=DotNetSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/DotNetSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAC/C,GAAG,GAAG,QAAQ,CAAC;IACf,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,eAAe,CAAC;IAC5B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;;IAIP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;MAI1F,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;;EAE1G,CAAC;IACD,CAAC;IAEO,sBAAsB,CAAC,GAAW;QACxC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,OAAO,IAAI,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,OAAO,IAAI,GAAG,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,uBAAuB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;;IAE/D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;MACpB,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,MAAM,MAAM,CAAC,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,CAAC,GAAqB,EAAU,EAAE;IACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QAC5B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QACtC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC"}
|
package/dist/{JsLegacySchemaGenerator.d.ts → schema-generators/JsLegacySchemaGenerator.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
1
3
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
-
import { SqlSyncRules } from './SqlSyncRules.js';
|
|
3
|
-
import { SourceSchema } from './types.js';
|
|
4
4
|
export declare class JsLegacySchemaGenerator extends SchemaGenerator {
|
|
5
5
|
readonly key = "jsLegacy";
|
|
6
6
|
readonly label = "JavaScript (legacy syntax)";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '
|
|
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
4
|
key = 'jsLegacy';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
3
|
+
import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
|
|
4
|
+
export declare class KotlinSchemaGenerator extends SchemaGenerator {
|
|
5
|
+
readonly key = "kotlin";
|
|
6
|
+
readonly label = "Kotlin";
|
|
7
|
+
readonly mediaType = "text/x-kotlin";
|
|
8
|
+
readonly fileName = "schema.kt";
|
|
9
|
+
generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
10
|
+
private generateTable;
|
|
11
|
+
private generateColumn;
|
|
12
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
+
export class KotlinSchemaGenerator extends SchemaGenerator {
|
|
3
|
+
key = 'kotlin';
|
|
4
|
+
label = 'Kotlin';
|
|
5
|
+
mediaType = 'text/x-kotlin';
|
|
6
|
+
fileName = 'schema.kt';
|
|
7
|
+
generate(source, schema, options) {
|
|
8
|
+
const tables = super.getAllTables(source, schema);
|
|
9
|
+
return `import com.powersync.db.schema.Column
|
|
10
|
+
import com.powersync.db.schema.Schema
|
|
11
|
+
import com.powersync.db.schema.Table
|
|
12
|
+
|
|
13
|
+
val schema = Schema(
|
|
14
|
+
${tables.map((table) => this.generateTable(table.name, table.columns, options)).join(',\n ')}
|
|
15
|
+
)`;
|
|
16
|
+
}
|
|
17
|
+
generateTable(name, columns, options) {
|
|
18
|
+
const generated = columns.map((c, i) => {
|
|
19
|
+
const last = i === columns.length - 1;
|
|
20
|
+
const base = this.generateColumn(c);
|
|
21
|
+
let withFormatting;
|
|
22
|
+
if (last) {
|
|
23
|
+
withFormatting = ` ${base}`;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
withFormatting = ` ${base},`;
|
|
27
|
+
}
|
|
28
|
+
if (options?.includeTypeComments && c.originalType != null) {
|
|
29
|
+
return `${withFormatting} // ${c.originalType}`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return withFormatting;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return `Table(
|
|
36
|
+
name = "${name}",
|
|
37
|
+
columns = listOf(
|
|
38
|
+
${generated.join('\n')}
|
|
39
|
+
)
|
|
40
|
+
)`;
|
|
41
|
+
}
|
|
42
|
+
generateColumn(column) {
|
|
43
|
+
return `Column.${this.columnType(column)}("${column.name}")`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=KotlinSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KotlinSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/KotlinSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAC/C,GAAG,GAAG,QAAQ,CAAC;IACf,KAAK,GAAG,QAAQ,CAAC;IACjB,SAAS,GAAG,eAAe,CAAC;IAC5B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;;;IAKP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;EAC7F,CAAC;IACD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,WAAW,IAAI,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,WAAW,IAAI,GAAG,CAAC;YACtC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;cACG,IAAI;;EAEhB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAElB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ColumnDefinition } from '
|
|
2
|
-
import { SqlSyncRules } from '
|
|
3
|
-
import { SourceSchema } from '
|
|
1
|
+
import { ColumnDefinition } from '../ExpressionType.js';
|
|
2
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
3
|
+
import { SourceSchema } from '../types.js';
|
|
4
4
|
export interface GenerateSchemaOptions {
|
|
5
5
|
includeTypeComments?: boolean;
|
|
6
6
|
}
|
|
@@ -14,4 +14,9 @@ export declare abstract class SchemaGenerator {
|
|
|
14
14
|
abstract readonly mediaType: string;
|
|
15
15
|
abstract readonly fileName: string;
|
|
16
16
|
abstract generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
17
|
+
/**
|
|
18
|
+
* @param def The column definition to generate the type for.
|
|
19
|
+
* @returns The SDK column type for the given column definition.
|
|
20
|
+
*/
|
|
21
|
+
columnType(def: ColumnDefinition): string;
|
|
17
22
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
|
|
2
|
+
export class SchemaGenerator {
|
|
3
|
+
getAllTables(source, schema) {
|
|
4
|
+
let tables = {};
|
|
5
|
+
for (let descriptor of source.bucketDescriptors) {
|
|
6
|
+
for (let query of descriptor.dataQueries) {
|
|
7
|
+
const outTables = query.getColumnOutputs(schema);
|
|
8
|
+
for (let table of outTables) {
|
|
9
|
+
tables[table.name] ??= {};
|
|
10
|
+
for (let column of table.columns) {
|
|
11
|
+
if (column.name != 'id') {
|
|
12
|
+
tables[table.name][column.name] ??= column;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return Object.entries(tables).map(([name, columns]) => {
|
|
19
|
+
return {
|
|
20
|
+
name: name,
|
|
21
|
+
columns: Object.values(columns)
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @param def The column definition to generate the type for.
|
|
27
|
+
* @returns The SDK column type for the given column definition.
|
|
28
|
+
*/
|
|
29
|
+
columnType(def) {
|
|
30
|
+
const { type } = def;
|
|
31
|
+
if (type.typeFlags & TYPE_TEXT) {
|
|
32
|
+
return 'text';
|
|
33
|
+
}
|
|
34
|
+
else if (type.typeFlags & TYPE_REAL) {
|
|
35
|
+
return 'real';
|
|
36
|
+
}
|
|
37
|
+
else if (type.typeFlags & TYPE_INTEGER) {
|
|
38
|
+
return 'integer';
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return 'text';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=SchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQ5F,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChD,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzC,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;IASD;;;OAGG;IACH,UAAU,CAAC,GAAqB;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
3
|
+
import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
|
|
4
|
+
export declare class SwiftSchemaGenerator extends SchemaGenerator {
|
|
5
|
+
readonly key = "swift";
|
|
6
|
+
readonly label = "Swift";
|
|
7
|
+
readonly mediaType = "text/x-swift";
|
|
8
|
+
readonly fileName = "schema.swift";
|
|
9
|
+
generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
10
|
+
private generateTable;
|
|
11
|
+
private generateColumn;
|
|
12
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
+
export class SwiftSchemaGenerator extends SchemaGenerator {
|
|
3
|
+
key = 'swift';
|
|
4
|
+
label = 'Swift';
|
|
5
|
+
mediaType = 'text/x-swift';
|
|
6
|
+
fileName = 'schema.swift';
|
|
7
|
+
generate(source, schema, options) {
|
|
8
|
+
const tables = super.getAllTables(source, schema);
|
|
9
|
+
return `import PowerSync
|
|
10
|
+
|
|
11
|
+
let schema = Schema(
|
|
12
|
+
${tables.map((table) => this.generateTable(table.name, table.columns, options)).join(',\n ')}
|
|
13
|
+
)`;
|
|
14
|
+
}
|
|
15
|
+
generateTable(name, columns, options) {
|
|
16
|
+
const generated = columns.map((c, i) => {
|
|
17
|
+
const last = i === columns.length - 1;
|
|
18
|
+
const base = this.generateColumn(c);
|
|
19
|
+
let withFormatting;
|
|
20
|
+
if (last) {
|
|
21
|
+
withFormatting = ` ${base}`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
withFormatting = ` ${base},`;
|
|
25
|
+
}
|
|
26
|
+
if (options?.includeTypeComments && c.originalType != null) {
|
|
27
|
+
return `${withFormatting} // ${c.originalType}`;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return withFormatting;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return `Table(
|
|
34
|
+
name: "${name}",
|
|
35
|
+
columns: [
|
|
36
|
+
${generated.join('\n')}
|
|
37
|
+
]
|
|
38
|
+
)`;
|
|
39
|
+
}
|
|
40
|
+
generateColumn(column) {
|
|
41
|
+
return `.${this.columnType(column)}("${column.name}")`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=SwiftSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwiftSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SwiftSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAC9C,GAAG,GAAG,OAAO,CAAC;IACd,KAAK,GAAG,OAAO,CAAC;IAChB,SAAS,GAAG,cAAc,CAAC;IAC3B,QAAQ,GAAG,cAAc,CAAC;IAEnC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;IAGP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;EAC7F,CAAC;IACD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,WAAW,IAAI,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,WAAW,IAAI,GAAG,CAAC;YACtC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;aACE,IAAI;;EAEf,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAElB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
1
3
|
import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
-
import { SqlSyncRules } from './SqlSyncRules.js';
|
|
3
|
-
import { SourceSchema } from './types.js';
|
|
4
4
|
export interface TsSchemaGeneratorOptions {
|
|
5
5
|
language?: TsSchemaLanguage;
|
|
6
6
|
imports?: TsSchemaImports;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '
|
|
1
|
+
import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
|
|
2
2
|
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
3
3
|
export var TsSchemaLanguage;
|
|
4
4
|
(function (TsSchemaLanguage) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TsSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/TsSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { DartFlutterFlowSchemaGenerator, DartSchemaGenerator } from './DartSchemaGenerator.js';
|
|
2
|
+
import { DotNetSchemaGenerator } from './DotNetSchemaGenerator.js';
|
|
2
3
|
import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
|
|
4
|
+
import { KotlinSchemaGenerator } from './KotlinSchemaGenerator.js';
|
|
5
|
+
import { SwiftSchemaGenerator } from './SwiftSchemaGenerator.js';
|
|
3
6
|
import { TsSchemaGenerator } from './TsSchemaGenerator.js';
|
|
4
7
|
export declare const schemaGenerators: {
|
|
5
|
-
ts: TsSchemaGenerator;
|
|
6
|
-
js: TsSchemaGenerator;
|
|
7
|
-
jsLegacy: JsLegacySchemaGenerator;
|
|
8
8
|
dart: DartSchemaGenerator;
|
|
9
|
+
dotNet: DotNetSchemaGenerator;
|
|
9
10
|
flutterFlow: DartFlutterFlowSchemaGenerator;
|
|
11
|
+
js: TsSchemaGenerator;
|
|
12
|
+
jsLegacy: JsLegacySchemaGenerator;
|
|
13
|
+
kotlin: KotlinSchemaGenerator;
|
|
14
|
+
swift: SwiftSchemaGenerator;
|
|
15
|
+
ts: TsSchemaGenerator;
|
|
10
16
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DartFlutterFlowSchemaGenerator, DartSchemaGenerator } from './DartSchemaGenerator.js';
|
|
2
|
+
import { DotNetSchemaGenerator } from './DotNetSchemaGenerator.js';
|
|
3
|
+
import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
|
|
4
|
+
import { KotlinSchemaGenerator } from './KotlinSchemaGenerator.js';
|
|
5
|
+
import { SwiftSchemaGenerator } from './SwiftSchemaGenerator.js';
|
|
6
|
+
import { TsSchemaGenerator, TsSchemaLanguage } from './TsSchemaGenerator.js';
|
|
7
|
+
export const schemaGenerators = {
|
|
8
|
+
dart: new DartSchemaGenerator(),
|
|
9
|
+
dotNet: new DotNetSchemaGenerator(),
|
|
10
|
+
flutterFlow: new DartFlutterFlowSchemaGenerator(),
|
|
11
|
+
js: new TsSchemaGenerator({ language: TsSchemaLanguage.js }),
|
|
12
|
+
jsLegacy: new JsLegacySchemaGenerator(),
|
|
13
|
+
kotlin: new KotlinSchemaGenerator(),
|
|
14
|
+
swift: new SwiftSchemaGenerator(),
|
|
15
|
+
ts: new TsSchemaGenerator()
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/schema-generators/generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,IAAI,mBAAmB,EAAE;IAC/B,MAAM,EAAE,IAAI,qBAAqB,EAAE;IACnC,WAAW,EAAE,IAAI,8BAA8B,EAAE;IACjD,EAAE,EAAE,IAAI,iBAAiB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,IAAI,uBAAuB,EAAE;IACvC,MAAM,EAAE,IAAI,qBAAqB,EAAE;IACnC,KAAK,EAAE,IAAI,oBAAoB,EAAE;IACjC,EAAE,EAAE,IAAI,iBAAiB,EAAE;CAC5B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './DartSchemaGenerator.js';
|
|
2
|
+
export * from './DotNetSchemaGenerator.js';
|
|
3
|
+
export * from './generators.js';
|
|
4
|
+
export * from './JsLegacySchemaGenerator.js';
|
|
5
|
+
export * from './KotlinSchemaGenerator.js';
|
|
6
|
+
export * from './SchemaGenerator.js';
|
|
7
|
+
export * from './SwiftSchemaGenerator.js';
|
|
8
|
+
export * from './TsSchemaGenerator.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './DartSchemaGenerator.js';
|
|
2
|
+
export * from './DotNetSchemaGenerator.js';
|
|
3
|
+
export * from './generators.js';
|
|
4
|
+
export * from './JsLegacySchemaGenerator.js';
|
|
5
|
+
export * from './KotlinSchemaGenerator.js';
|
|
6
|
+
export * from './SchemaGenerator.js';
|
|
7
|
+
export * from './SwiftSchemaGenerator.js';
|
|
8
|
+
export * from './TsSchemaGenerator.js';
|
|
9
|
+
//# sourceMappingURL=schema-generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-generators.js","sourceRoot":"","sources":["../../src/schema-generators/schema-generators.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
|
package/dist/sql_filters.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Expr, ExprRef, Name, NodeLocation, QName, QNameAliased, SelectedColumn } from 'pgsql-ast-parser';
|
|
2
2
|
import { nil } from 'pgsql-ast-parser/src/utils.js';
|
|
3
|
+
import { BucketPriority } from './BucketDescription.js';
|
|
3
4
|
import { SqlRuleError } from './errors.js';
|
|
4
5
|
import { SqlFunction } from './sql_functions.js';
|
|
5
6
|
import { ClauseError, CompiledClause, ParameterMatchClause, ParameterValueClause, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
|
|
6
|
-
import { BucketPriority } from './BucketDescription.js';
|
|
7
7
|
export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
|
|
8
8
|
export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
|
|
9
9
|
export interface SqlToolsOptions {
|
|
@@ -20,13 +20,13 @@ export interface SqlToolsOptions {
|
|
|
20
20
|
* "bucket" (bucket parameters for data query)
|
|
21
21
|
* "token_parameters" (token parameters for parameter query)
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
parameterTables?: string[];
|
|
24
24
|
/**
|
|
25
25
|
* Set of tables used in QueryParameters.
|
|
26
26
|
*
|
|
27
27
|
* If not specified, defaults to [table].
|
|
28
28
|
*/
|
|
29
|
-
|
|
29
|
+
valueTables?: string[];
|
|
30
30
|
/**
|
|
31
31
|
* For debugging / error messages.
|
|
32
32
|
*/
|
|
@@ -36,28 +36,28 @@ export interface SqlToolsOptions {
|
|
|
36
36
|
*
|
|
37
37
|
* Only one parameter may be expanded.
|
|
38
38
|
*/
|
|
39
|
-
|
|
39
|
+
supportsExpandingParameters?: boolean;
|
|
40
40
|
/**
|
|
41
41
|
* true if expressions on parameters are supported, e.g. upper(token_parameters.user_id)
|
|
42
42
|
*/
|
|
43
|
-
|
|
43
|
+
supportsParameterExpressions?: boolean;
|
|
44
44
|
/**
|
|
45
45
|
* Schema for validations.
|
|
46
46
|
*/
|
|
47
47
|
schema?: QuerySchema;
|
|
48
48
|
}
|
|
49
49
|
export declare class SqlTools {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
readonly defaultTable?: string;
|
|
51
|
+
readonly valueTables: string[];
|
|
52
52
|
/**
|
|
53
53
|
* ['bucket'] for data queries
|
|
54
54
|
* ['token_parameters', 'user_parameters'] for parameter queries
|
|
55
55
|
*/
|
|
56
|
-
|
|
57
|
-
sql: string;
|
|
58
|
-
errors: SqlRuleError[];
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
readonly parameterTables: string[];
|
|
57
|
+
readonly sql: string;
|
|
58
|
+
readonly errors: SqlRuleError[];
|
|
59
|
+
readonly supportsExpandingParameters: boolean;
|
|
60
|
+
readonly supportsParameterExpressions: boolean;
|
|
61
61
|
schema?: QuerySchema;
|
|
62
62
|
constructor(options: SqlToolsOptions);
|
|
63
63
|
error(message: string, expr: NodeLocation | Expr | undefined): ClauseError;
|
package/dist/sql_filters.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
import { JSONBig } from '@powersync/service-jsonbig';
|
|
2
|
+
import { isValidPriority } from './BucketDescription.js';
|
|
2
3
|
import { ExpressionType } from './ExpressionType.js';
|
|
3
4
|
import { SqlRuleError } from './errors.js';
|
|
4
5
|
import { REQUEST_FUNCTIONS } from './request_functions.js';
|
|
5
6
|
import { BASIC_OPERATORS, OPERATOR_IN, OPERATOR_IS_NOT_NULL, OPERATOR_IS_NULL, OPERATOR_JSON_EXTRACT_JSON, OPERATOR_JSON_EXTRACT_SQL, OPERATOR_NOT, SQL_FUNCTIONS, castOperator, getOperatorFunction, sqliteTypeOf } from './sql_functions.js';
|
|
6
7
|
import { SQLITE_FALSE, SQLITE_TRUE, andFilters, compileStaticOperator, isClauseError, isParameterMatchClause, isParameterValueClause, isRowValueClause, isStaticValueClause, orFilters, toBooleanParameterSetClause } from './sql_support.js';
|
|
7
8
|
import { isJsonValue } from './utils.js';
|
|
8
|
-
import { isValidPriority } from './BucketDescription.js';
|
|
9
9
|
export const MATCH_CONST_FALSE = [];
|
|
10
10
|
export const MATCH_CONST_TRUE = [{}];
|
|
11
11
|
Object.freeze(MATCH_CONST_TRUE);
|
|
12
12
|
Object.freeze(MATCH_CONST_FALSE);
|
|
13
13
|
export class SqlTools {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
defaultTable;
|
|
15
|
+
valueTables;
|
|
16
16
|
/**
|
|
17
17
|
* ['bucket'] for data queries
|
|
18
18
|
* ['token_parameters', 'user_parameters'] for parameter queries
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
parameterTables;
|
|
21
21
|
sql;
|
|
22
22
|
errors = [];
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
supportsExpandingParameters;
|
|
24
|
+
supportsParameterExpressions;
|
|
25
25
|
schema;
|
|
26
26
|
constructor(options) {
|
|
27
|
-
this.
|
|
27
|
+
this.defaultTable = options.table;
|
|
28
28
|
this.schema = options.schema;
|
|
29
|
-
if (options.
|
|
30
|
-
this.
|
|
29
|
+
if (options.valueTables) {
|
|
30
|
+
this.valueTables = options.valueTables;
|
|
31
31
|
}
|
|
32
|
-
else if (this.
|
|
33
|
-
this.
|
|
32
|
+
else if (this.defaultTable) {
|
|
33
|
+
this.valueTables = [this.defaultTable];
|
|
34
34
|
}
|
|
35
35
|
else {
|
|
36
|
-
this.
|
|
36
|
+
this.valueTables = [];
|
|
37
37
|
}
|
|
38
|
-
this.
|
|
38
|
+
this.parameterTables = options.parameterTables ?? [];
|
|
39
39
|
this.sql = options.sql;
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
40
|
+
this.supportsExpandingParameters = options.supportsExpandingParameters ?? false;
|
|
41
|
+
this.supportsParameterExpressions = options.supportsParameterExpressions ?? false;
|
|
42
42
|
}
|
|
43
43
|
error(message, expr) {
|
|
44
44
|
this.errors.push(new SqlRuleError(message, this.sql, expr));
|
|
@@ -146,7 +146,7 @@ export class SqlTools {
|
|
|
146
146
|
// 4. parameter value, parameter value
|
|
147
147
|
let staticFilter1;
|
|
148
148
|
let otherFilter1;
|
|
149
|
-
if (this.
|
|
149
|
+
if (this.supportsParameterExpressions &&
|
|
150
150
|
isParameterValueClause(leftFilter) &&
|
|
151
151
|
isParameterValueClause(rightFilter)) {
|
|
152
152
|
// 4. parameterValue, parameterValue
|
|
@@ -247,7 +247,7 @@ export class SqlTools {
|
|
|
247
247
|
usesUnauthenticatedRequestParameters: leftFilter.usesUnauthenticatedRequestParameters
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
|
-
else if (this.
|
|
250
|
+
else if (this.supportsExpandingParameters &&
|
|
251
251
|
isRowValueClause(leftFilter) &&
|
|
252
252
|
isParameterValueClause(rightFilter)) {
|
|
253
253
|
// table.some_value IN token_parameters.some_array
|
|
@@ -325,7 +325,7 @@ export class SqlTools {
|
|
|
325
325
|
}
|
|
326
326
|
else if (schema == 'request') {
|
|
327
327
|
// Special function
|
|
328
|
-
if (!this.
|
|
328
|
+
if (!this.supportsParameterExpressions) {
|
|
329
329
|
return this.error(`${schema} schema is not available in data queries`, expr);
|
|
330
330
|
}
|
|
331
331
|
if (expr.args.length > 0) {
|
|
@@ -410,8 +410,8 @@ export class SqlTools {
|
|
|
410
410
|
if (expr.type != 'ref') {
|
|
411
411
|
return false;
|
|
412
412
|
}
|
|
413
|
-
const tableName = expr.table?.name ?? this.
|
|
414
|
-
return this.
|
|
413
|
+
const tableName = expr.table?.name ?? this.defaultTable;
|
|
414
|
+
return this.parameterTables.includes(tableName ?? '');
|
|
415
415
|
}
|
|
416
416
|
/**
|
|
417
417
|
* Check if an expression is a value_tables reference.
|
|
@@ -489,7 +489,7 @@ export class SqlTools {
|
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
491
|
getParameterRefClause(expr) {
|
|
492
|
-
const table = (expr.table?.name ?? this.
|
|
492
|
+
const table = (expr.table?.name ?? this.defaultTable);
|
|
493
493
|
const column = expr.name;
|
|
494
494
|
return {
|
|
495
495
|
key: `${table}.${column}`,
|
|
@@ -512,8 +512,8 @@ export class SqlTools {
|
|
|
512
512
|
if (this.refHasSchema(ref)) {
|
|
513
513
|
throw new SqlRuleError(`Specifying schema in column references is not supported`, this.sql, ref);
|
|
514
514
|
}
|
|
515
|
-
const tableName = ref.table?.name ?? this.
|
|
516
|
-
if (this.
|
|
515
|
+
const tableName = ref.table?.name ?? this.defaultTable;
|
|
516
|
+
if (this.valueTables.includes(tableName ?? '')) {
|
|
517
517
|
return tableName;
|
|
518
518
|
}
|
|
519
519
|
else if (ref.table?.name == null) {
|
|
@@ -611,7 +611,7 @@ export class SqlTools {
|
|
|
611
611
|
// argsType unchanged
|
|
612
612
|
}
|
|
613
613
|
else if (isParameterValueClause(clause)) {
|
|
614
|
-
if (!this.
|
|
614
|
+
if (!this.supportsParameterExpressions) {
|
|
615
615
|
if (fnImpl.debugName == 'operatorIN') {
|
|
616
616
|
// Special-case error message to be more descriptive
|
|
617
617
|
return { error: `Cannot use bucket parameters on the right side of IN operators`, errorExpr: debugArg };
|