@mikro-orm/sql 7.0.14 → 7.0.15-dev.1

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 (89) hide show
  1. package/AbstractSqlConnection.d.ts +58 -94
  2. package/AbstractSqlConnection.js +238 -235
  3. package/AbstractSqlDriver.d.ts +155 -410
  4. package/AbstractSqlDriver.js +1972 -2100
  5. package/AbstractSqlPlatform.d.ts +76 -86
  6. package/AbstractSqlPlatform.js +167 -169
  7. package/PivotCollectionPersister.d.ts +15 -33
  8. package/PivotCollectionPersister.js +160 -158
  9. package/README.md +1 -1
  10. package/SqlEntityManager.d.ts +22 -67
  11. package/SqlEntityManager.js +38 -54
  12. package/SqlEntityRepository.d.ts +14 -14
  13. package/SqlEntityRepository.js +23 -23
  14. package/SqlMikroORM.d.ts +8 -49
  15. package/SqlMikroORM.js +8 -8
  16. package/dialects/mssql/MsSqlNativeQueryBuilder.d.ts +12 -12
  17. package/dialects/mssql/MsSqlNativeQueryBuilder.js +201 -199
  18. package/dialects/mysql/BaseMySqlPlatform.d.ts +46 -65
  19. package/dialects/mysql/BaseMySqlPlatform.js +134 -137
  20. package/dialects/mysql/MySqlExceptionConverter.d.ts +6 -6
  21. package/dialects/mysql/MySqlExceptionConverter.js +77 -91
  22. package/dialects/mysql/MySqlNativeQueryBuilder.d.ts +3 -3
  23. package/dialects/mysql/MySqlNativeQueryBuilder.js +69 -66
  24. package/dialects/mysql/MySqlSchemaHelper.d.ts +39 -58
  25. package/dialects/mysql/MySqlSchemaHelper.js +319 -327
  26. package/dialects/oracledb/OracleDialect.d.ts +52 -81
  27. package/dialects/oracledb/OracleDialect.js +149 -155
  28. package/dialects/oracledb/OracleNativeQueryBuilder.d.ts +12 -12
  29. package/dialects/oracledb/OracleNativeQueryBuilder.js +243 -239
  30. package/dialects/postgresql/BasePostgreSqlPlatform.d.ts +107 -110
  31. package/dialects/postgresql/BasePostgreSqlPlatform.js +369 -370
  32. package/dialects/postgresql/FullTextType.d.ts +6 -10
  33. package/dialects/postgresql/FullTextType.js +51 -51
  34. package/dialects/postgresql/PostgreSqlExceptionConverter.d.ts +5 -5
  35. package/dialects/postgresql/PostgreSqlExceptionConverter.js +43 -55
  36. package/dialects/postgresql/PostgreSqlNativeQueryBuilder.d.ts +1 -1
  37. package/dialects/postgresql/PostgreSqlNativeQueryBuilder.js +4 -4
  38. package/dialects/postgresql/PostgreSqlSchemaHelper.d.ts +82 -117
  39. package/dialects/postgresql/PostgreSqlSchemaHelper.js +712 -748
  40. package/dialects/sqlite/BaseSqliteConnection.d.ts +5 -3
  41. package/dialects/sqlite/BaseSqliteConnection.js +19 -21
  42. package/dialects/sqlite/NodeSqliteDialect.d.ts +1 -1
  43. package/dialects/sqlite/NodeSqliteDialect.js +23 -23
  44. package/dialects/sqlite/SqliteDriver.d.ts +1 -1
  45. package/dialects/sqlite/SqliteDriver.js +3 -3
  46. package/dialects/sqlite/SqliteExceptionConverter.d.ts +6 -6
  47. package/dialects/sqlite/SqliteExceptionConverter.js +51 -67
  48. package/dialects/sqlite/SqliteNativeQueryBuilder.d.ts +2 -2
  49. package/dialects/sqlite/SqliteNativeQueryBuilder.js +7 -7
  50. package/dialects/sqlite/SqlitePlatform.d.ts +73 -64
  51. package/dialects/sqlite/SqlitePlatform.js +143 -143
  52. package/dialects/sqlite/SqliteSchemaHelper.d.ts +61 -78
  53. package/dialects/sqlite/SqliteSchemaHelper.js +522 -541
  54. package/package.json +2 -2
  55. package/plugin/index.d.ts +35 -42
  56. package/plugin/index.js +36 -43
  57. package/plugin/transformer.d.ts +94 -117
  58. package/plugin/transformer.js +881 -890
  59. package/query/ArrayCriteriaNode.d.ts +4 -4
  60. package/query/ArrayCriteriaNode.js +18 -18
  61. package/query/CriteriaNode.d.ts +25 -35
  62. package/query/CriteriaNode.js +132 -142
  63. package/query/CriteriaNodeFactory.d.ts +6 -49
  64. package/query/CriteriaNodeFactory.js +94 -97
  65. package/query/NativeQueryBuilder.d.ts +120 -120
  66. package/query/NativeQueryBuilder.js +501 -507
  67. package/query/ObjectCriteriaNode.d.ts +12 -12
  68. package/query/ObjectCriteriaNode.js +282 -298
  69. package/query/QueryBuilder.d.ts +906 -1558
  70. package/query/QueryBuilder.js +2202 -2331
  71. package/query/QueryBuilderHelper.d.ts +72 -153
  72. package/query/QueryBuilderHelper.js +1032 -1084
  73. package/query/ScalarCriteriaNode.d.ts +3 -3
  74. package/query/ScalarCriteriaNode.js +46 -53
  75. package/query/enums.d.ts +14 -14
  76. package/query/enums.js +14 -14
  77. package/query/raw.d.ts +6 -16
  78. package/query/raw.js +10 -10
  79. package/schema/DatabaseSchema.d.ts +50 -74
  80. package/schema/DatabaseSchema.js +331 -359
  81. package/schema/DatabaseTable.d.ts +73 -96
  82. package/schema/DatabaseTable.js +974 -1046
  83. package/schema/SchemaComparator.d.ts +66 -70
  84. package/schema/SchemaComparator.js +765 -790
  85. package/schema/SchemaHelper.d.ts +97 -128
  86. package/schema/SchemaHelper.js +668 -683
  87. package/schema/SqlSchemaGenerator.d.ts +59 -79
  88. package/schema/SqlSchemaGenerator.js +495 -525
  89. package/typings.d.ts +275 -405
@@ -2,73 +2,76 @@ import { isRaw, LockMode, Utils } from '@mikro-orm/core';
2
2
  import { NativeQueryBuilder } from '../../query/NativeQueryBuilder.js';
3
3
  /** @internal */
4
4
  export class MySqlNativeQueryBuilder extends NativeQueryBuilder {
5
- compileInsert() {
6
- if (!this.options.data) {
7
- throw new Error('No data provided');
5
+ compileInsert() {
6
+ if (!this.options.data) {
7
+ throw new Error('No data provided');
8
+ }
9
+ this.parts.push('insert');
10
+ if (this.options.onConflict?.ignore) {
11
+ this.parts.push('ignore');
12
+ }
13
+ this.addHintComment();
14
+ this.parts.push(`into ${this.getTableName()}`);
15
+ if (Object.keys(this.options.data).length === 0) {
16
+ this.parts.push('default values');
17
+ return;
18
+ }
19
+ const parts = this.processInsertData();
20
+ this.parts.push(parts.join(', '));
8
21
  }
9
- this.parts.push('insert');
10
- if (this.options.onConflict?.ignore) {
11
- this.parts.push('ignore');
22
+ addLockClause() {
23
+ if (!this.options.lockMode) {
24
+ return;
25
+ }
26
+ const map = {
27
+ [LockMode.PESSIMISTIC_READ]: 'lock in share mode',
28
+ [LockMode.PESSIMISTIC_WRITE]: 'for update',
29
+ [LockMode.PESSIMISTIC_PARTIAL_WRITE]: 'for update skip locked',
30
+ [LockMode.PESSIMISTIC_WRITE_OR_FAIL]: 'for update nowait',
31
+ [LockMode.PESSIMISTIC_PARTIAL_READ]: 'lock in share mode skip locked',
32
+ [LockMode.PESSIMISTIC_READ_OR_FAIL]: 'lock in share mode nowait',
33
+ };
34
+ if (this.options.lockMode !== LockMode.OPTIMISTIC) {
35
+ this.parts.push(map[this.options.lockMode]);
36
+ }
12
37
  }
13
- this.addHintComment();
14
- this.parts.push(`into ${this.getTableName()}`);
15
- if (Object.keys(this.options.data).length === 0) {
16
- this.parts.push('default values');
17
- return;
38
+ addOnConflictClause() {
39
+ const clause = this.options.onConflict;
40
+ if (!clause || clause.ignore) {
41
+ return;
42
+ }
43
+ if (clause.merge) {
44
+ this.parts.push('on duplicate key update');
45
+ if (Utils.isObject(clause.merge)) {
46
+ const fields = Object.keys(clause.merge).map(field => {
47
+ this.params.push(clause.merge[field]);
48
+ return `${this.quote(field)} = ?`;
49
+ });
50
+ this.parts.push(fields.join(', '));
51
+ }
52
+ else if (clause.merge.length === 0) {
53
+ const dataAsArray = Utils.asArray(this.options.data);
54
+ const keys = Object.keys(dataAsArray[0]);
55
+ this.parts.push(keys.map(key => `${this.quote(key)} = values(${this.quote(key)})`).join(', '));
56
+ }
57
+ else {
58
+ const fields = clause.merge.map(key => `${this.quote(key)} = values(${this.quote(key)})`);
59
+ this.parts.push(fields.join(', '));
60
+ }
61
+ if (clause.where) {
62
+ this.parts.push(`where ${clause.where.sql}`);
63
+ this.params.push(...clause.where.params);
64
+ }
65
+ return;
66
+ }
67
+ this.parts.push('on conflict');
68
+ if (isRaw(clause.fields)) {
69
+ this.parts.push(clause.fields.sql);
70
+ this.params.push(...clause.fields.params);
71
+ }
72
+ else if (clause.fields.length > 0) {
73
+ const fields = clause.fields.map(field => this.quote(field));
74
+ this.parts.push(`(${fields.join(', ')})`);
75
+ }
18
76
  }
19
- const parts = this.processInsertData();
20
- this.parts.push(parts.join(', '));
21
- }
22
- addLockClause() {
23
- if (!this.options.lockMode) {
24
- return;
25
- }
26
- const map = {
27
- [LockMode.PESSIMISTIC_READ]: 'lock in share mode',
28
- [LockMode.PESSIMISTIC_WRITE]: 'for update',
29
- [LockMode.PESSIMISTIC_PARTIAL_WRITE]: 'for update skip locked',
30
- [LockMode.PESSIMISTIC_WRITE_OR_FAIL]: 'for update nowait',
31
- [LockMode.PESSIMISTIC_PARTIAL_READ]: 'lock in share mode skip locked',
32
- [LockMode.PESSIMISTIC_READ_OR_FAIL]: 'lock in share mode nowait',
33
- };
34
- if (this.options.lockMode !== LockMode.OPTIMISTIC) {
35
- this.parts.push(map[this.options.lockMode]);
36
- }
37
- }
38
- addOnConflictClause() {
39
- const clause = this.options.onConflict;
40
- if (!clause || clause.ignore) {
41
- return;
42
- }
43
- if (clause.merge) {
44
- this.parts.push('on duplicate key update');
45
- if (Utils.isObject(clause.merge)) {
46
- const fields = Object.keys(clause.merge).map(field => {
47
- this.params.push(clause.merge[field]);
48
- return `${this.quote(field)} = ?`;
49
- });
50
- this.parts.push(fields.join(', '));
51
- } else if (clause.merge.length === 0) {
52
- const dataAsArray = Utils.asArray(this.options.data);
53
- const keys = Object.keys(dataAsArray[0]);
54
- this.parts.push(keys.map(key => `${this.quote(key)} = values(${this.quote(key)})`).join(', '));
55
- } else {
56
- const fields = clause.merge.map(key => `${this.quote(key)} = values(${this.quote(key)})`);
57
- this.parts.push(fields.join(', '));
58
- }
59
- if (clause.where) {
60
- this.parts.push(`where ${clause.where.sql}`);
61
- this.params.push(...clause.where.params);
62
- }
63
- return;
64
- }
65
- this.parts.push('on conflict');
66
- if (isRaw(clause.fields)) {
67
- this.parts.push(clause.fields.sql);
68
- this.params.push(...clause.fields.params);
69
- } else if (clause.fields.length > 0) {
70
- const fields = clause.fields.map(field => this.quote(field));
71
- this.parts.push(`(${fields.join(', ')})`);
72
- }
73
- }
74
77
  }
@@ -5,62 +5,43 @@ import { SchemaHelper } from '../../schema/SchemaHelper.js';
5
5
  import type { DatabaseSchema } from '../../schema/DatabaseSchema.js';
6
6
  import type { DatabaseTable } from '../../schema/DatabaseTable.js';
7
7
  export declare class MySqlSchemaHelper extends SchemaHelper {
8
- #private;
9
- static readonly DEFAULT_VALUES: {
10
- 'now()': string[];
11
- 'current_timestamp(?)': string[];
12
- '0': string[];
13
- };
14
- getSchemaBeginning(charset: string, disableForeignKeys?: boolean): string;
15
- disableForeignKeysSQL(): string;
16
- enableForeignKeysSQL(): string;
17
- finalizeTable(table: DatabaseTable, charset: string, collate?: string): string;
18
- getListTablesSQL(): string;
19
- getListViewsSQL(): string;
20
- loadViews(
21
- schema: DatabaseSchema,
22
- connection: AbstractSqlConnection,
23
- schemaName?: string,
24
- ctx?: Transaction,
25
- ): Promise<void>;
26
- loadInformationSchema(
27
- schema: DatabaseSchema,
28
- connection: AbstractSqlConnection,
29
- tables: Table[],
30
- schemas?: string[],
31
- ctx?: Transaction,
32
- ): Promise<void>;
33
- getAllIndexes(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<IndexDef[]>>;
34
- getCreateIndexSQL(tableName: string, index: IndexDef, partialExpression?: boolean): string;
35
- /**
36
- * Build the column list for a MySQL index, with MySQL-specific handling for collation.
37
- * MySQL requires collation to be specified as an expression: (column_name COLLATE collation_name)
38
- */
39
- protected getIndexColumns(index: IndexDef): string;
40
- /**
41
- * Append MySQL-specific index suffixes like INVISIBLE.
42
- */
43
- protected appendMySqlIndexSuffix(sql: string, index: IndexDef): string;
44
- getAllColumns(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<Column[]>>;
45
- getAllChecks(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<CheckDef[]>>;
46
- getAllForeignKeys(
47
- connection: AbstractSqlConnection,
48
- tables: Table[],
49
- ctx?: Transaction,
50
- ): Promise<Dictionary<Dictionary<ForeignKey>>>;
51
- getPreAlterTable(tableDiff: TableDifference, safe: boolean): string[];
52
- getRenameColumnSQL(tableName: string, oldColumnName: string, to: Column): string;
53
- getRenameIndexSQL(tableName: string, index: IndexDef, oldIndexName: string): string[];
54
- getChangeColumnCommentSQL(tableName: string, to: Column, schemaName?: string): string;
55
- alterTableColumn(column: Column, table: DatabaseTable, changedProperties: Set<string>): string[];
56
- private getColumnDeclarationSQL;
57
- getAllEnumDefinitions(
58
- connection: AbstractSqlConnection,
59
- tables: Table[],
60
- ctx?: Transaction,
61
- ): Promise<Dictionary<Dictionary<string[]>>>;
62
- private supportsCheckConstraints;
63
- protected getChecksSQL(tables: Table[]): string;
64
- normalizeDefaultValue(defaultValue: string, length: number): string | number;
65
- protected wrap(val: string | null | undefined, type: Type<unknown>): string | null | undefined;
8
+ #private;
9
+ static readonly DEFAULT_VALUES: {
10
+ 'now()': string[];
11
+ 'current_timestamp(?)': string[];
12
+ '0': string[];
13
+ };
14
+ getSchemaBeginning(charset: string, disableForeignKeys?: boolean): string;
15
+ disableForeignKeysSQL(): string;
16
+ enableForeignKeysSQL(): string;
17
+ finalizeTable(table: DatabaseTable, charset: string, collate?: string): string;
18
+ getListTablesSQL(): string;
19
+ getListViewsSQL(): string;
20
+ loadViews(schema: DatabaseSchema, connection: AbstractSqlConnection, schemaName?: string, ctx?: Transaction): Promise<void>;
21
+ loadInformationSchema(schema: DatabaseSchema, connection: AbstractSqlConnection, tables: Table[], schemas?: string[], ctx?: Transaction): Promise<void>;
22
+ getAllIndexes(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<IndexDef[]>>;
23
+ getCreateIndexSQL(tableName: string, index: IndexDef, partialExpression?: boolean): string;
24
+ /**
25
+ * Build the column list for a MySQL index, with MySQL-specific handling for collation.
26
+ * MySQL requires collation to be specified as an expression: (column_name COLLATE collation_name)
27
+ */
28
+ protected getIndexColumns(index: IndexDef): string;
29
+ /**
30
+ * Append MySQL-specific index suffixes like INVISIBLE.
31
+ */
32
+ protected appendMySqlIndexSuffix(sql: string, index: IndexDef): string;
33
+ getAllColumns(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<Column[]>>;
34
+ getAllChecks(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<CheckDef[]>>;
35
+ getAllForeignKeys(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<Dictionary<ForeignKey>>>;
36
+ getPreAlterTable(tableDiff: TableDifference, safe: boolean): string[];
37
+ getRenameColumnSQL(tableName: string, oldColumnName: string, to: Column): string;
38
+ getRenameIndexSQL(tableName: string, index: IndexDef, oldIndexName: string): string[];
39
+ getChangeColumnCommentSQL(tableName: string, to: Column, schemaName?: string): string;
40
+ alterTableColumn(column: Column, table: DatabaseTable, changedProperties: Set<string>): string[];
41
+ private getColumnDeclarationSQL;
42
+ getAllEnumDefinitions(connection: AbstractSqlConnection, tables: Table[], ctx?: Transaction): Promise<Dictionary<Dictionary<string[]>>>;
43
+ private supportsCheckConstraints;
44
+ protected getChecksSQL(tables: Table[]): string;
45
+ normalizeDefaultValue(defaultValue: string, length: number): string | number;
46
+ protected wrap(val: string | null | undefined, type: Type<unknown>): string | null | undefined;
66
47
  }