@mikro-orm/sql 7.1.16-dev.1 → 7.1.16-dev.11
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/AbstractSqlConnection.d.ts +21 -3
- package/AbstractSqlConnection.js +54 -4
- package/AbstractSqlDriver.d.ts +1 -1
- package/AbstractSqlDriver.js +17 -4
- package/AbstractSqlPlatform.d.ts +3 -1
- package/AbstractSqlPlatform.js +32 -1
- package/README.md +1 -0
- package/SqlEntityManager.d.ts +2 -2
- package/SqlEntityManager.js +1 -1
- package/dialects/mysql/BaseMySqlPlatform.d.ts +2 -0
- package/dialects/mysql/BaseMySqlPlatform.js +4 -0
- package/dialects/postgresql/BasePostgreSqlPlatform.d.ts +2 -0
- package/dialects/postgresql/BasePostgreSqlPlatform.js +33 -1
- package/dialects/postgresql/PostgreSqlExceptionConverter.js +8 -1
- package/dialects/postgresql/PostgreSqlSchemaHelper.d.ts +18 -1
- package/dialects/postgresql/PostgreSqlSchemaHelper.js +152 -0
- package/dialects/sqlite/SqlitePlatform.d.ts +2 -0
- package/dialects/sqlite/SqlitePlatform.js +4 -0
- package/package.json +2 -2
- package/query/ObjectCriteriaNode.d.ts +1 -0
- package/query/ObjectCriteriaNode.js +28 -4
- package/query/QueryBuilder.js +21 -7
- package/query/QueryBuilderHelper.js +4 -0
- package/schema/DatabaseSchema.d.ts +4 -0
- package/schema/DatabaseSchema.js +107 -1
- package/schema/DatabaseTable.d.ts +13 -1
- package/schema/DatabaseTable.js +50 -1
- package/schema/SchemaComparator.d.ts +2 -0
- package/schema/SchemaComparator.js +90 -0
- package/schema/SchemaHelper.d.ts +6 -0
- package/schema/SchemaHelper.js +15 -0
- package/schema/SqlSchemaGenerator.js +8 -0
- package/typings.d.ts +16 -0
|
@@ -94,6 +94,10 @@ export class SqlSchemaGenerator extends AbstractSchemaGenerator {
|
|
|
94
94
|
this.append(ret, fks, true);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
// RLS policies are deferred until every table exists, so a policy expression can reference another table
|
|
98
|
+
for (const table of toSchema.getTables()) {
|
|
99
|
+
this.append(ret, this.helper.getRlsCreateSQL(table));
|
|
100
|
+
}
|
|
97
101
|
const sortedViews = this.sortViewsByDependencies(toSchema.getViews());
|
|
98
102
|
for (const view of sortedViews) {
|
|
99
103
|
this.appendViewCreation(ret, view);
|
|
@@ -351,6 +355,7 @@ export class SqlSchemaGenerator extends AbstractSchemaGenerator {
|
|
|
351
355
|
for (const trigger of newTable.getTriggers()) {
|
|
352
356
|
this.append(sql, this.helper.createTrigger(newTable, trigger));
|
|
353
357
|
}
|
|
358
|
+
this.append(sql, this.helper.getRlsCreateSQL(newTable));
|
|
354
359
|
this.append(ret, sql, true);
|
|
355
360
|
}
|
|
356
361
|
}
|
|
@@ -410,6 +415,9 @@ export class SqlSchemaGenerator extends AbstractSchemaGenerator {
|
|
|
410
415
|
}
|
|
411
416
|
preAlterTable(diff, safe) {
|
|
412
417
|
const ret = [];
|
|
418
|
+
// removed/changed policies must be dropped before any column type alter, including the pre-alter
|
|
419
|
+
// uuid-to-text cast on postgres — a policy expression blocks type changes on the columns it references
|
|
420
|
+
this.append(ret, this.helper.getRlsDropSQL(diff, safe));
|
|
413
421
|
this.append(ret, this.helper.getPreAlterTable(diff, safe));
|
|
414
422
|
for (const foreignKey of Object.values(diff.removedForeignKeys)) {
|
|
415
423
|
ret.push(this.helper.dropForeignKey(diff.toTable.getShortestName(), foreignKey.constraintName));
|
package/typings.d.ts
CHANGED
|
@@ -114,6 +114,15 @@ export interface CheckDef<T = unknown> {
|
|
|
114
114
|
definition?: string;
|
|
115
115
|
columnName?: string;
|
|
116
116
|
}
|
|
117
|
+
/** Resolved row level security policy for schema operations (all callbacks resolved to strings). */
|
|
118
|
+
export interface SqlPolicyDef {
|
|
119
|
+
name: string;
|
|
120
|
+
command: 'select' | 'insert' | 'update' | 'delete' | 'all';
|
|
121
|
+
type: 'permissive' | 'restrictive';
|
|
122
|
+
roles: string[];
|
|
123
|
+
using?: string;
|
|
124
|
+
check?: string;
|
|
125
|
+
}
|
|
117
126
|
/** Resolved trigger definition for schema operations (all callbacks resolved to strings). */
|
|
118
127
|
export interface SqlTriggerDef {
|
|
119
128
|
name: string;
|
|
@@ -191,6 +200,13 @@ export interface TableDifference {
|
|
|
191
200
|
addedTriggers: Dictionary<SqlTriggerDef>;
|
|
192
201
|
changedTriggers: Dictionary<SqlTriggerDef>;
|
|
193
202
|
removedTriggers: Dictionary<SqlTriggerDef>;
|
|
203
|
+
addedPolicies: Dictionary<SqlPolicyDef>;
|
|
204
|
+
/** Changed policies surface as `removedPolicies` + `addedPolicies` pairs (drop + recreate). */
|
|
205
|
+
removedPolicies: Dictionary<SqlPolicyDef>;
|
|
206
|
+
/** New RLS enable state, present only when it changed. */
|
|
207
|
+
changedRlsEnabled?: boolean;
|
|
208
|
+
/** New RLS force state, present only when it changed. */
|
|
209
|
+
changedRlsForced?: boolean;
|
|
194
210
|
addedForeignKeys: Dictionary<ForeignKey>;
|
|
195
211
|
changedForeignKeys: Dictionary<ForeignKey>;
|
|
196
212
|
removedForeignKeys: Dictionary<ForeignKey>;
|