@powersync/service-sync-rules 0.29.4 → 0.29.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BaseSqlDataQuery.d.ts +3 -3
- package/dist/BaseSqlDataQuery.js +6 -6
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/SqlBucketDescriptor.js +2 -2
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.js +6 -6
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +5 -4
- package/dist/SqlParameterQuery.js +20 -15
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/StaticSqlParameterQuery.js +11 -9
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/TableQuerySchema.d.ts +6 -1
- package/dist/TableQuerySchema.js +6 -2
- package/dist/TableQuerySchema.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +4 -2
- package/dist/TableValuedFunctionSqlParameterQuery.js +26 -15
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.js +5 -5
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/request_functions.d.ts +19 -7
- package/dist/request_functions.js +8 -10
- package/dist/request_functions.js.map +1 -1
- package/dist/schema-generators/RoomSchemaGenerator.d.ts +13 -0
- package/dist/schema-generators/RoomSchemaGenerator.js +53 -0
- package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -0
- package/dist/schema-generators/SchemaGenerator.d.ts +1 -1
- package/dist/schema-generators/SqlSchemaGenerator.d.ts +15 -0
- package/dist/schema-generators/SqlSchemaGenerator.js +31 -0
- package/dist/schema-generators/SqlSchemaGenerator.js.map +1 -0
- package/dist/schema-generators/schema-generators.d.ts +4 -0
- package/dist/schema-generators/schema-generators.js +4 -0
- package/dist/schema-generators/schema-generators.js.map +1 -1
- package/dist/sql_filters.d.ts +42 -13
- package/dist/sql_filters.js +64 -32
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_support.js +13 -14
- package/dist/sql_support.js.map +1 -1
- package/dist/streams/from_sql.js +38 -24
- package/dist/streams/from_sql.js.map +1 -1
- package/dist/streams/functions.js +3 -5
- package/dist/streams/functions.js.map +1 -1
- package/dist/streams/stream.js +2 -2
- package/dist/streams/stream.js.map +1 -1
- package/dist/types.d.ts +32 -15
- package/dist/types.js +10 -4
- package/dist/types.js.map +1 -1
- package/dist/validators.d.ts +14 -0
- package/dist/validators.js +63 -0
- package/dist/validators.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { SqlRuleError } from './errors.js';
|
|
2
|
-
import { SqlTools } from './sql_filters.js';
|
|
3
|
-
import { checkUnsupportedFeatures, isClauseError,
|
|
2
|
+
import { AvailableTable, SqlTools } from './sql_filters.js';
|
|
3
|
+
import { checkUnsupportedFeatures, isClauseError, sqliteBool } from './sql_support.js';
|
|
4
4
|
import { generateTableValuedFunctions } from './TableValuedFunctions.js';
|
|
5
5
|
import { getBucketId, isJsonValue } from './utils.js';
|
|
6
6
|
import { DEFAULT_BUCKET_PRIORITY } from './BucketDescription.js';
|
|
7
|
+
import { DetectRequestParameters } from './validators.js';
|
|
7
8
|
/**
|
|
8
9
|
* Represents a parameter query using a table-valued function.
|
|
9
10
|
*
|
|
@@ -22,11 +23,11 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
22
23
|
if (!(call.function.name in tableValuedFunctions)) {
|
|
23
24
|
throw new SqlRuleError(`Table-valued function ${call.function.name} is not defined.`, sql, call);
|
|
24
25
|
}
|
|
25
|
-
const callTable =
|
|
26
|
+
const callTable = AvailableTable.fromCall(call);
|
|
26
27
|
const callExpression = call.args[0];
|
|
27
28
|
const tools = new SqlTools({
|
|
28
29
|
table: callTable,
|
|
29
|
-
parameterTables: ['token_parameters', 'user_parameters', callTable],
|
|
30
|
+
parameterTables: [new AvailableTable('token_parameters'), new AvailableTable('user_parameters'), callTable],
|
|
30
31
|
supportsParameterExpressions: true,
|
|
31
32
|
compatibilityContext: compatibility,
|
|
32
33
|
sql
|
|
@@ -64,7 +65,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
64
65
|
filter: isClauseError(filter) ? undefined : filter,
|
|
65
66
|
callClause: isClauseError(callClause) ? undefined : callClause,
|
|
66
67
|
function: functionImpl,
|
|
67
|
-
|
|
68
|
+
callTable,
|
|
68
69
|
priority: priority ?? DEFAULT_BUCKET_PRIORITY,
|
|
69
70
|
queryId,
|
|
70
71
|
errors
|
|
@@ -128,7 +129,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
128
129
|
*
|
|
129
130
|
* Only used internally.
|
|
130
131
|
*/
|
|
131
|
-
|
|
132
|
+
callTable;
|
|
132
133
|
errors;
|
|
133
134
|
constructor(options) {
|
|
134
135
|
this.sql = options.sql;
|
|
@@ -140,7 +141,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
140
141
|
this.filter = options.filter;
|
|
141
142
|
this.callClause = options.callClause;
|
|
142
143
|
this.function = options.function;
|
|
143
|
-
this.
|
|
144
|
+
this.callTable = options.callTable;
|
|
144
145
|
this.errors = options.errors;
|
|
145
146
|
}
|
|
146
147
|
getStaticBucketDescriptions(parameters, transformer) {
|
|
@@ -163,7 +164,7 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
163
164
|
const mergedParams = {
|
|
164
165
|
...parameters,
|
|
165
166
|
lookup: (table, column) => {
|
|
166
|
-
if (table == this.
|
|
167
|
+
if (table == this.callTable.nameInSchema) {
|
|
167
168
|
return row[column];
|
|
168
169
|
}
|
|
169
170
|
else {
|
|
@@ -190,24 +191,34 @@ export class TableValuedFunctionSqlParameterQuery {
|
|
|
190
191
|
priority: this.priority
|
|
191
192
|
};
|
|
192
193
|
}
|
|
194
|
+
visitParameterExtractorsAndCallClause() {
|
|
195
|
+
const visitor = new DetectRequestParameters();
|
|
196
|
+
// e.g. select request.user_id() as user_id
|
|
197
|
+
visitor.acceptAll(Object.values(this.parameterExtractors));
|
|
198
|
+
// e.g. select value from json_each(request.jwt() ->> 'project_ids')
|
|
199
|
+
visitor.accept(this.callClause);
|
|
200
|
+
return visitor;
|
|
201
|
+
}
|
|
193
202
|
get hasAuthenticatedBucketParameters() {
|
|
194
203
|
// select where request.jwt() ->> 'role' == 'authorized'
|
|
195
204
|
// we do not count this as a sufficient check
|
|
196
205
|
// const authenticatedFilter = this.filter.usesAuthenticatedRequestParameters;
|
|
206
|
+
const visitor = new DetectRequestParameters();
|
|
197
207
|
// select request.user_id() as user_id
|
|
198
|
-
|
|
208
|
+
visitor.acceptAll(Object.values(this.parameterExtractors));
|
|
199
209
|
// select value from json_each(request.jwt() ->> 'project_ids')
|
|
200
|
-
|
|
201
|
-
return
|
|
210
|
+
visitor.accept(this.callClause);
|
|
211
|
+
return visitor.usesAuthenticatedRequestParameters;
|
|
202
212
|
}
|
|
203
213
|
get usesUnauthenticatedRequestParameters() {
|
|
214
|
+
const visitor = new DetectRequestParameters();
|
|
204
215
|
// select where request.parameters() ->> 'include_comments'
|
|
205
|
-
|
|
216
|
+
visitor.accept(this.filter);
|
|
206
217
|
// select request.parameters() ->> 'project_id'
|
|
207
|
-
|
|
218
|
+
visitor.acceptAll(Object.values(this.parameterExtractors));
|
|
208
219
|
// select value from json_each(request.parameters() ->> 'project_ids')
|
|
209
|
-
|
|
210
|
-
return
|
|
220
|
+
visitor.accept(this.callClause);
|
|
221
|
+
return visitor.usesUnauthenticatedRequestParameters;
|
|
211
222
|
}
|
|
212
223
|
get usesDangerousRequestParameters() {
|
|
213
224
|
return this.usesUnauthenticatedRequestParameters && !this.hasAuthenticatedBucketParameters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableValuedFunctionSqlParameterQuery.js","sourceRoot":"","sources":["../src/TableValuedFunctionSqlParameterQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"TableValuedFunctionSqlParameterQuery.js","sourceRoot":"","sources":["../src/TableValuedFunctionSqlParameterQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { parse } from 'pgsql-ast-parser';
|
|
|
2
2
|
import { BaseSqlDataQuery } from '../BaseSqlDataQuery.js';
|
|
3
3
|
import { SqlRuleError } from '../errors.js';
|
|
4
4
|
import { ExpressionType } from '../ExpressionType.js';
|
|
5
|
-
import { SqlTools } from '../sql_filters.js';
|
|
5
|
+
import { AvailableTable, SqlTools } from '../sql_filters.js';
|
|
6
6
|
import { checkUnsupportedFeatures, isClauseError } from '../sql_support.js';
|
|
7
7
|
import { TablePattern } from '../TablePattern.js';
|
|
8
8
|
import { TableQuerySchema } from '../TableQuerySchema.js';
|
|
@@ -30,7 +30,7 @@ export class SqlEventSourceQuery extends BaseSqlDataQuery {
|
|
|
30
30
|
if (tableRef?.name == null) {
|
|
31
31
|
throw new SqlRuleError('Must SELECT from a single table', sql, q.from?.[0]._location);
|
|
32
32
|
}
|
|
33
|
-
const alias =
|
|
33
|
+
const alias = AvailableTable.fromAst(tableRef);
|
|
34
34
|
const sourceTable = new TablePattern(tableRef.schema ?? options.defaultSchema, tableRef.name);
|
|
35
35
|
let querySchema = undefined;
|
|
36
36
|
if (schema) {
|
|
@@ -74,7 +74,7 @@ export class SqlEventSourceQuery extends BaseSqlDataQuery {
|
|
|
74
74
|
else {
|
|
75
75
|
extractors.push({
|
|
76
76
|
extract: (tables, output) => {
|
|
77
|
-
const row = tables[alias];
|
|
77
|
+
const row = tables[alias.nameInSchema];
|
|
78
78
|
for (let key in row) {
|
|
79
79
|
if (key.startsWith('_')) {
|
|
80
80
|
continue;
|
|
@@ -83,7 +83,7 @@ export class SqlEventSourceQuery extends BaseSqlDataQuery {
|
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
getTypes(schema, into) {
|
|
86
|
-
for (let column of schema.getColumns(alias)) {
|
|
86
|
+
for (let column of schema.getColumns(alias.nameInSchema)) {
|
|
87
87
|
into[column.name] ??= column;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -108,7 +108,7 @@ export class SqlEventSourceQuery extends BaseSqlDataQuery {
|
|
|
108
108
|
}
|
|
109
109
|
evaluateRowWithErrors(table, row) {
|
|
110
110
|
try {
|
|
111
|
-
const tables = { [this.table]: this.addSpecialParameters(table, row) };
|
|
111
|
+
const tables = { [this.table.nameInSchema]: this.addSpecialParameters(table, row) };
|
|
112
112
|
const data = this.transformRow(tables);
|
|
113
113
|
return {
|
|
114
114
|
result: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/SqlEventSourceQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAA8C,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlEventSourceQuery.js","sourceRoot":"","sources":["../../src/events/SqlEventSourceQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { ExpressionType } from './ExpressionType.js';
|
|
2
|
-
import { ParameterValueSet, SqliteValue } from './types.js';
|
|
2
|
+
import { CompiledClause, ParameterValueClause, ParameterValueSet, SqliteValue } from './types.js';
|
|
3
3
|
export interface SqlParameterFunction {
|
|
4
4
|
readonly debugName: string;
|
|
5
5
|
call: (parameters: ParameterValueSet, ...args: SqliteValue[]) => SqliteValue;
|
|
6
6
|
getReturnType(): ExpressionType;
|
|
7
7
|
parameterCount: number;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Whether this function returns data derived from usage parameters.
|
|
10
|
+
*
|
|
11
|
+
* This can be:
|
|
12
|
+
*
|
|
13
|
+
* 1. `subscription`, for unauthenticated subscription parameters like `subscription.parameters()`.
|
|
14
|
+
* 2. `authenticated`, for parameters authenticated by a trusted backend (like `request.user_id()`).
|
|
15
|
+
* 3. `unauthenticated`, for global unauthenticated request parameters like (like `request.parameters()`).
|
|
16
|
+
*/
|
|
17
|
+
parameterUsage: 'subscription' | 'authenticated' | 'unauthenticated' | null;
|
|
12
18
|
detail: string;
|
|
13
19
|
documentation: string;
|
|
14
20
|
}
|
|
@@ -24,8 +30,7 @@ export declare function parameterFunctions(options: {
|
|
|
24
30
|
extractJsonParsed: (v: ParameterValueSet) => any;
|
|
25
31
|
sourceDescription: string;
|
|
26
32
|
sourceDocumentation: string;
|
|
27
|
-
|
|
28
|
-
usesUnauthenticatedRequestParameters: boolean;
|
|
33
|
+
parameterUsage: SqlParameterFunction['parameterUsage'];
|
|
29
34
|
}): {
|
|
30
35
|
parameters: SqlParameterFunction;
|
|
31
36
|
parameter: SqlParameterFunction;
|
|
@@ -37,3 +42,10 @@ export declare function globalRequestParameterFunctions(schema: string): {
|
|
|
37
42
|
export declare const request_jwt: SqlParameterFunction;
|
|
38
43
|
export declare function generateUserIdFunction(debugName: string, sameAsDesc: string): SqlParameterFunction;
|
|
39
44
|
export declare const REQUEST_FUNCTIONS: Record<string, SqlParameterFunction>;
|
|
45
|
+
/**
|
|
46
|
+
* A {@link ParameterValueClause} derived from a call to a {@link SqlParameterFunction}.
|
|
47
|
+
*/
|
|
48
|
+
export interface RequestFunctionCall extends ParameterValueClause {
|
|
49
|
+
function: SqlParameterFunction;
|
|
50
|
+
}
|
|
51
|
+
export declare function isRequestFunctionCall(clause: CompiledClause): clause is RequestFunctionCall;
|
|
@@ -20,8 +20,7 @@ export function parameterFunctions(options) {
|
|
|
20
20
|
},
|
|
21
21
|
detail: options.sourceDescription,
|
|
22
22
|
documentation: `Returns ${options.sourceDocumentation}`,
|
|
23
|
-
|
|
24
|
-
usesUnauthenticatedRequestParameters: options.usesUnauthenticatedRequestParameters
|
|
23
|
+
parameterUsage: options.parameterUsage
|
|
25
24
|
};
|
|
26
25
|
const extractParameter = {
|
|
27
26
|
debugName: `${options.schema}.parameter`,
|
|
@@ -41,8 +40,7 @@ export function parameterFunctions(options) {
|
|
|
41
40
|
},
|
|
42
41
|
detail: `Extract value from ${options.sourceDescription}`,
|
|
43
42
|
documentation: `Returns an extracted value (via the key as the second argument) from ${options.sourceDocumentation}`,
|
|
44
|
-
|
|
45
|
-
usesUnauthenticatedRequestParameters: options.usesUnauthenticatedRequestParameters
|
|
43
|
+
parameterUsage: options.parameterUsage
|
|
46
44
|
};
|
|
47
45
|
return { parameters: allParameters, parameter: extractParameter };
|
|
48
46
|
}
|
|
@@ -57,8 +55,7 @@ export function globalRequestParameterFunctions(schema) {
|
|
|
57
55
|
},
|
|
58
56
|
sourceDescription: 'Unauthenticated request parameters as JSON',
|
|
59
57
|
sourceDocumentation: 'parameters passed by the client as a JSON string. These parameters are not authenticated - any value can be passed in by the client.',
|
|
60
|
-
|
|
61
|
-
usesUnauthenticatedRequestParameters: true
|
|
58
|
+
parameterUsage: 'unauthenticated'
|
|
62
59
|
});
|
|
63
60
|
}
|
|
64
61
|
export const request_jwt = {
|
|
@@ -72,8 +69,7 @@ export const request_jwt = {
|
|
|
72
69
|
},
|
|
73
70
|
detail: 'JWT payload as JSON',
|
|
74
71
|
documentation: 'The JWT payload as a JSON string. This is always validated against trusted keys.',
|
|
75
|
-
|
|
76
|
-
usesUnauthenticatedRequestParameters: false
|
|
72
|
+
parameterUsage: 'authenticated'
|
|
77
73
|
};
|
|
78
74
|
export function generateUserIdFunction(debugName, sameAsDesc) {
|
|
79
75
|
return {
|
|
@@ -87,8 +83,7 @@ export function generateUserIdFunction(debugName, sameAsDesc) {
|
|
|
87
83
|
},
|
|
88
84
|
detail: 'Authenticated user id',
|
|
89
85
|
documentation: `The id of the authenticated user.\nSame as \`${sameAsDesc} ->> 'sub'\`.`,
|
|
90
|
-
|
|
91
|
-
usesUnauthenticatedRequestParameters: false
|
|
86
|
+
parameterUsage: 'authenticated'
|
|
92
87
|
};
|
|
93
88
|
}
|
|
94
89
|
const REQUEST_FUNCTIONS_NAMED = {
|
|
@@ -97,4 +92,7 @@ const REQUEST_FUNCTIONS_NAMED = {
|
|
|
97
92
|
user_id: generateUserIdFunction('request.user_id', 'request.jwt()')
|
|
98
93
|
};
|
|
99
94
|
export const REQUEST_FUNCTIONS = REQUEST_FUNCTIONS_NAMED;
|
|
95
|
+
export function isRequestFunctionCall(clause) {
|
|
96
|
+
return clause.function != null;
|
|
97
|
+
}
|
|
100
98
|
//# sourceMappingURL=request_functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request_functions.js","sourceRoot":"","sources":["../src/request_functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAuB,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"request_functions.js","sourceRoot":"","sources":["../src/request_functions.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 { SchemaGenerator } from './SchemaGenerator.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generates a schema to use with the [Room library](https://docs.powersync.com/client-sdk-references/kotlin-multiplatform/libraries/room).
|
|
6
|
+
*/
|
|
7
|
+
export declare class RoomSchemaGenerator extends SchemaGenerator {
|
|
8
|
+
readonly key = "kotlin-room";
|
|
9
|
+
readonly label = "Room (Kotlin Multiplatform)";
|
|
10
|
+
readonly mediaType = "text/x-kotlin";
|
|
11
|
+
readonly fileName = "Entities.kt";
|
|
12
|
+
generate(source: SqlSyncRules, schema: SourceSchema): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a schema to use with the [Room library](https://docs.powersync.com/client-sdk-references/kotlin-multiplatform/libraries/room).
|
|
4
|
+
*/
|
|
5
|
+
export class RoomSchemaGenerator extends SchemaGenerator {
|
|
6
|
+
key = 'kotlin-room';
|
|
7
|
+
label = 'Room (Kotlin Multiplatform)';
|
|
8
|
+
mediaType = 'text/x-kotlin';
|
|
9
|
+
fileName = 'Entities.kt';
|
|
10
|
+
generate(source, schema) {
|
|
11
|
+
let buffer = `import androidx.room.ColumnInfo
|
|
12
|
+
import androidx.room.Entity
|
|
13
|
+
import androidx.room.PrimaryKey
|
|
14
|
+
`;
|
|
15
|
+
const tables = super.getAllTables(source, schema);
|
|
16
|
+
for (const table of tables) {
|
|
17
|
+
// @Entity(tableName = "todo_list_items") data class TodoListItems(
|
|
18
|
+
buffer += `\n@Entity(tableName = "${table.name}")\n`;
|
|
19
|
+
buffer += `data class ${snakeCaseToKotlin(table.name, true)}(\n`;
|
|
20
|
+
// Id column
|
|
21
|
+
buffer += ' @PrimaryKey val id: String,\n';
|
|
22
|
+
for (const column of table.columns) {
|
|
23
|
+
const sqliteType = this.columnType(column);
|
|
24
|
+
const kotlinType = {
|
|
25
|
+
text: 'String',
|
|
26
|
+
real: 'Double',
|
|
27
|
+
integer: 'Long'
|
|
28
|
+
}[sqliteType];
|
|
29
|
+
// @ColumnInfo(name = "author_id") val authorId: String,
|
|
30
|
+
buffer += ` @ColumnInfo("${column.name}") val ${snakeCaseToKotlin(column.name, false)}: ${kotlinType},\n`;
|
|
31
|
+
}
|
|
32
|
+
buffer += ')\n';
|
|
33
|
+
}
|
|
34
|
+
return buffer;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function snakeCaseToKotlin(source, initialUpper) {
|
|
38
|
+
let result = '';
|
|
39
|
+
for (const chunk of source.split('_')) {
|
|
40
|
+
if (chunk.length == 0)
|
|
41
|
+
continue;
|
|
42
|
+
const firstCharUpper = result.length > 0 || initialUpper;
|
|
43
|
+
if (firstCharUpper) {
|
|
44
|
+
result += chunk.charAt(0).toUpperCase();
|
|
45
|
+
result += chunk.substring(1);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
result += chunk;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=RoomSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoomSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/RoomSchemaGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC7C,GAAG,GAAG,aAAa,CAAC;IACpB,KAAK,GAAG,6BAA6B,CAAC;IACtC,SAAS,GAAG,eAAe,CAAC;IAC5B,QAAQ,GAAG,aAAa,CAAC;IAElC,QAAQ,CAAC,MAAoB,EAAE,MAAoB;QACjD,IAAI,MAAM,GAAG;;;CAGhB,CAAC;QACE,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,mEAAmE;YACnE,MAAM,IAAI,0BAA0B,KAAK,CAAC,IAAI,MAAM,CAAC;YACrD,MAAM,IAAI,cAAc,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;YAEjE,YAAY;YACZ,MAAM,IAAI,iCAAiC,CAAC;YAE5C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG;oBACjB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,MAAM;iBAChB,CAAC,UAAU,CAAC,CAAC;gBAEd,wDAAwD;gBACxD,MAAM,IAAI,kBAAkB,MAAM,CAAC,IAAI,UAAU,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC;YAC7G,CAAC;YAED,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,YAAqB;IAC9D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,SAAS;QAEhC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -18,5 +18,5 @@ export declare abstract class SchemaGenerator {
|
|
|
18
18
|
* @param def The column definition to generate the type for.
|
|
19
19
|
* @returns The SDK column type for the given column definition.
|
|
20
20
|
*/
|
|
21
|
-
columnType(def: ColumnDefinition):
|
|
21
|
+
columnType(def: ColumnDefinition): 'text' | 'real' | 'integer';
|
|
22
22
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SqlSyncRules } from '../SqlSyncRules.js';
|
|
2
|
+
import { SourceSchema } from '../types.js';
|
|
3
|
+
import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generates a schema as `CREATE TABLE` statements, useful for libraries like drift or SQLDelight which can generate
|
|
6
|
+
* typed rows or generate queries based on that.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SqlSchemaGenerator extends SchemaGenerator {
|
|
9
|
+
readonly label: string;
|
|
10
|
+
readonly fileName: string;
|
|
11
|
+
readonly key = "sql";
|
|
12
|
+
readonly mediaType = "application/sql";
|
|
13
|
+
constructor(label: string, fileName: string);
|
|
14
|
+
generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SchemaGenerator } from './SchemaGenerator.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a schema as `CREATE TABLE` statements, useful for libraries like drift or SQLDelight which can generate
|
|
4
|
+
* typed rows or generate queries based on that.
|
|
5
|
+
*/
|
|
6
|
+
export class SqlSchemaGenerator extends SchemaGenerator {
|
|
7
|
+
label;
|
|
8
|
+
fileName;
|
|
9
|
+
key = 'sql';
|
|
10
|
+
mediaType = 'application/sql';
|
|
11
|
+
constructor(label, fileName) {
|
|
12
|
+
super();
|
|
13
|
+
this.label = label;
|
|
14
|
+
this.fileName = fileName;
|
|
15
|
+
}
|
|
16
|
+
generate(source, schema, options) {
|
|
17
|
+
let buffer = '-- Note: These definitions are only used to generate typed code. PowerSync manages the database schema.\n';
|
|
18
|
+
const tables = super.getAllTables(source, schema);
|
|
19
|
+
for (const table of tables) {
|
|
20
|
+
buffer += `CREATE TABLE ${table.name}(\n`;
|
|
21
|
+
buffer += ' id TEXT NOT NULL PRIMARY KEY';
|
|
22
|
+
for (const column of table.columns) {
|
|
23
|
+
const type = this.columnType(column).toUpperCase();
|
|
24
|
+
buffer += `,\n ${column.name} ${type}`;
|
|
25
|
+
}
|
|
26
|
+
buffer += '\n);\n';
|
|
27
|
+
}
|
|
28
|
+
return buffer;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=SqlSchemaGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SqlSchemaGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IAK1C;IACA;IALF,GAAG,GAAG,KAAK,CAAC;IACZ,SAAS,GAAG,iBAAiB,CAAC;IAEvC,YACW,KAAa,EACb,QAAgB;QAEzB,KAAK,EAAE,CAAC;QAHC,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAQ;IAG3B,CAAC;IAED,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,IAAI,MAAM,GACR,2GAA2G,CAAC;QAC9G,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,gBAAgB,KAAK,CAAC,IAAI,KAAK,CAAC;YAE1C,MAAM,IAAI,gCAAgC,CAAC;YAC3C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnD,MAAM,IAAI,QAAQ,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YAC1C,CAAC;YAED,MAAM,IAAI,QAAQ,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { SqlSchemaGenerator } from './SqlSchemaGenerator.js';
|
|
1
2
|
export * from './DartSchemaGenerator.js';
|
|
2
3
|
export * from './DotNetSchemaGenerator.js';
|
|
3
4
|
export * from './generators.js';
|
|
4
5
|
export * from './JsLegacySchemaGenerator.js';
|
|
5
6
|
export * from './KotlinSchemaGenerator.js';
|
|
7
|
+
export * from './RoomSchemaGenerator.js';
|
|
6
8
|
export * from './SchemaGenerator.js';
|
|
7
9
|
export * from './SwiftSchemaGenerator.js';
|
|
8
10
|
export * from './TsSchemaGenerator.js';
|
|
11
|
+
export declare const driftSchemaGenerator: SqlSchemaGenerator;
|
|
12
|
+
export declare const sqlDelightSchemaGenerator: SqlSchemaGenerator;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { SqlSchemaGenerator } from './SqlSchemaGenerator.js';
|
|
1
2
|
export * from './DartSchemaGenerator.js';
|
|
2
3
|
export * from './DotNetSchemaGenerator.js';
|
|
3
4
|
export * from './generators.js';
|
|
4
5
|
export * from './JsLegacySchemaGenerator.js';
|
|
5
6
|
export * from './KotlinSchemaGenerator.js';
|
|
7
|
+
export * from './RoomSchemaGenerator.js';
|
|
6
8
|
export * from './SchemaGenerator.js';
|
|
7
9
|
export * from './SwiftSchemaGenerator.js';
|
|
8
10
|
export * from './TsSchemaGenerator.js';
|
|
11
|
+
export const driftSchemaGenerator = new SqlSchemaGenerator('Drift', 'tables.drift');
|
|
12
|
+
export const sqlDelightSchemaGenerator = new SqlSchemaGenerator('SQLDelight', 'tables.sq');
|
|
9
13
|
//# sourceMappingURL=schema-generators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-generators.js","sourceRoot":"","sources":["../../src/schema-generators/schema-generators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-generators.js","sourceRoot":"","sources":["../../src/schema-generators/schema-generators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC"}
|
package/dist/sql_filters.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Expr, ExprRef, Name, NodeLocation, QName, QNameAliased, SelectedColumn } from 'pgsql-ast-parser';
|
|
1
|
+
import { Expr, ExprRef, FromCall, Name, NodeLocation, QName, QNameAliased, SelectedColumn } from 'pgsql-ast-parser';
|
|
2
2
|
import { nil } from 'pgsql-ast-parser/src/utils.js';
|
|
3
3
|
import { BucketPriority } from './BucketDescription.js';
|
|
4
4
|
import { SqlRuleError } from './errors.js';
|
|
@@ -8,13 +8,41 @@ import { ClauseError, CompiledClause, InputParameter, ParameterMatchClause, Para
|
|
|
8
8
|
import { CompatibilityContext } from './compatibility.js';
|
|
9
9
|
export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
|
|
10
10
|
export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
|
|
11
|
+
/**
|
|
12
|
+
* A table that has been made available to a result set by being included in a `FROM`.
|
|
13
|
+
*
|
|
14
|
+
* This is used to lookup references inside queries only, which is why this doesn't reference the schema name (that's
|
|
15
|
+
* covered by {@link TablePattern}).
|
|
16
|
+
*/
|
|
17
|
+
export declare class AvailableTable {
|
|
18
|
+
/**
|
|
19
|
+
* The name of the table in the schema.
|
|
20
|
+
*/
|
|
21
|
+
nameInSchema: string;
|
|
22
|
+
/**
|
|
23
|
+
* The alias under which the {@link nameInSchema} is made available to the current query.
|
|
24
|
+
*/
|
|
25
|
+
alias?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The name a table has in an SQL expression context.
|
|
28
|
+
*/
|
|
29
|
+
get sqlName(): string;
|
|
30
|
+
get isAliased(): boolean;
|
|
31
|
+
constructor(schemaName: string, alias?: string);
|
|
32
|
+
static fromAst(name: QNameAliased): AvailableTable;
|
|
33
|
+
static fromCall(name: FromCall): AvailableTable;
|
|
34
|
+
/**
|
|
35
|
+
* Finds the first table matching the given name in SQL.
|
|
36
|
+
*/
|
|
37
|
+
static search(identifier: string | AvailableTable | undefined, available: AvailableTable[]): AvailableTable | undefined;
|
|
38
|
+
}
|
|
11
39
|
export interface SqlToolsOptions {
|
|
12
40
|
/**
|
|
13
41
|
* Default table name, if any. I.e. SELECT FROM <table>.
|
|
14
42
|
*
|
|
15
43
|
* Used for to determine the table when using bare column names.
|
|
16
44
|
*/
|
|
17
|
-
table?:
|
|
45
|
+
table?: AvailableTable;
|
|
18
46
|
/**
|
|
19
47
|
* Set of tables used for FilterParameters.
|
|
20
48
|
*
|
|
@@ -22,13 +50,13 @@ export interface SqlToolsOptions {
|
|
|
22
50
|
* "bucket" (bucket parameters for data query)
|
|
23
51
|
* "token_parameters" (token parameters for parameter query)
|
|
24
52
|
*/
|
|
25
|
-
parameterTables?:
|
|
53
|
+
parameterTables?: AvailableTable[];
|
|
26
54
|
/**
|
|
27
55
|
* Set of tables used in QueryParameters.
|
|
28
56
|
*
|
|
29
|
-
* If not specified, defaults to
|
|
57
|
+
* If not specified, defaults to {@link table}.
|
|
30
58
|
*/
|
|
31
|
-
valueTables?:
|
|
59
|
+
valueTables?: AvailableTable[];
|
|
32
60
|
/**
|
|
33
61
|
* For debugging / error messages.
|
|
34
62
|
*/
|
|
@@ -57,13 +85,15 @@ export interface SqlToolsOptions {
|
|
|
57
85
|
compatibilityContext: CompatibilityContext;
|
|
58
86
|
}
|
|
59
87
|
export declare class SqlTools {
|
|
60
|
-
readonly defaultTable?:
|
|
61
|
-
readonly valueTables:
|
|
88
|
+
readonly defaultTable?: AvailableTable;
|
|
89
|
+
readonly valueTables: AvailableTable[];
|
|
62
90
|
/**
|
|
63
91
|
* ['bucket'] for data queries
|
|
64
92
|
* ['token_parameters', 'user_parameters'] for parameter queries
|
|
93
|
+
*
|
|
94
|
+
* These are never aliased.
|
|
65
95
|
*/
|
|
66
|
-
readonly parameterTables:
|
|
96
|
+
readonly parameterTables: AvailableTable[];
|
|
67
97
|
readonly sql: string;
|
|
68
98
|
readonly errors: SqlRuleError[];
|
|
69
99
|
readonly supportsExpandingParameters: boolean;
|
|
@@ -95,8 +125,7 @@ export declare class SqlTools {
|
|
|
95
125
|
inputParameters: InputParameter[];
|
|
96
126
|
unbounded: false;
|
|
97
127
|
filterRow(tables: QueryParameters): TrueIfParametersMatch;
|
|
98
|
-
|
|
99
|
-
usesUnauthenticatedRequestParameters: boolean;
|
|
128
|
+
visitChildren: (v: (clause: CompiledClause) => void) => void;
|
|
100
129
|
};
|
|
101
130
|
/**
|
|
102
131
|
* "some_column" => "some_column"
|
|
@@ -110,7 +139,7 @@ export declare class SqlTools {
|
|
|
110
139
|
/**
|
|
111
140
|
* Check if an expression is a parameter_table reference.
|
|
112
141
|
*/
|
|
113
|
-
isParameterRef
|
|
142
|
+
private isParameterRef;
|
|
114
143
|
/**
|
|
115
144
|
* Check if an expression is a value_tables reference.
|
|
116
145
|
*
|
|
@@ -124,14 +153,14 @@ export declare class SqlTools {
|
|
|
124
153
|
*/
|
|
125
154
|
checkSpecificNameCase(expr: Name | QName | QNameAliased): void;
|
|
126
155
|
private checkRef;
|
|
127
|
-
getParameterRefClause
|
|
156
|
+
private getParameterRefClause;
|
|
128
157
|
refHasSchema(ref: ExprRef): boolean;
|
|
129
158
|
/**
|
|
130
159
|
* Get the table name from an expression.
|
|
131
160
|
*
|
|
132
161
|
* Only "value" tables are supported here, not parameter values.
|
|
133
162
|
*/
|
|
134
|
-
getTableName(ref: ExprRef):
|
|
163
|
+
getTableName(ref: ExprRef): AvailableTable;
|
|
135
164
|
/**
|
|
136
165
|
* Given a function, compile a clause with the function over compiled arguments.
|
|
137
166
|
*
|