@mikro-orm/knex 6.0.0-dev.4 → 6.0.0-dev.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.
Files changed (53) hide show
  1. package/{dist/AbstractSqlConnection.d.ts → AbstractSqlConnection.d.ts} +0 -0
  2. package/{dist/AbstractSqlConnection.js → AbstractSqlConnection.js} +5 -0
  3. package/AbstractSqlDriver.d.ts +66 -0
  4. package/{dist/AbstractSqlDriver.js → AbstractSqlDriver.js} +218 -70
  5. package/{dist/AbstractSqlPlatform.d.ts → AbstractSqlPlatform.d.ts} +6 -6
  6. package/{dist/AbstractSqlPlatform.js → AbstractSqlPlatform.js} +12 -14
  7. package/{dist/MonkeyPatchable.d.ts → MonkeyPatchable.d.ts} +0 -0
  8. package/{dist/MonkeyPatchable.js → MonkeyPatchable.js} +0 -0
  9. package/{dist/README.md → README.md} +2 -2
  10. package/{dist/SqlEntityManager.d.ts → SqlEntityManager.d.ts} +5 -5
  11. package/{dist/SqlEntityManager.js → SqlEntityManager.js} +0 -1
  12. package/{dist/SqlEntityRepository.d.ts → SqlEntityRepository.d.ts} +3 -3
  13. package/{dist/SqlEntityRepository.js → SqlEntityRepository.js} +1 -1
  14. package/{dist/index.d.ts → index.d.ts} +0 -0
  15. package/{dist/index.js → index.js} +5 -1
  16. package/{dist/index.mjs → index.mjs} +0 -0
  17. package/package.json +18 -47
  18. package/{dist/query → query}/ArrayCriteriaNode.d.ts +0 -0
  19. package/{dist/query → query}/ArrayCriteriaNode.js +0 -0
  20. package/{dist/query → query}/CriteriaNode.d.ts +0 -0
  21. package/{dist/query → query}/CriteriaNode.js +7 -4
  22. package/{dist/query → query}/CriteriaNodeFactory.d.ts +0 -0
  23. package/{dist/query → query}/CriteriaNodeFactory.js +0 -0
  24. package/{dist/query → query}/ObjectCriteriaNode.d.ts +0 -0
  25. package/{dist/query → query}/ObjectCriteriaNode.js +14 -1
  26. package/{dist/query → query}/QueryBuilder.d.ts +58 -24
  27. package/{dist/query → query}/QueryBuilder.js +285 -84
  28. package/{dist/query → query}/QueryBuilderHelper.d.ts +19 -11
  29. package/{dist/query → query}/QueryBuilderHelper.js +206 -108
  30. package/{dist/query → query}/ScalarCriteriaNode.d.ts +0 -0
  31. package/{dist/query → query}/ScalarCriteriaNode.js +0 -0
  32. package/{dist/query → query}/enums.d.ts +0 -0
  33. package/{dist/query → query}/enums.js +0 -0
  34. package/{dist/query → query}/index.d.ts +0 -0
  35. package/{dist/query → query}/index.js +5 -1
  36. package/{dist/schema → schema}/DatabaseSchema.d.ts +1 -1
  37. package/{dist/schema → schema}/DatabaseSchema.js +8 -16
  38. package/{dist/schema → schema}/DatabaseTable.d.ts +1 -1
  39. package/{dist/schema → schema}/DatabaseTable.js +2 -1
  40. package/{dist/schema → schema}/SchemaComparator.d.ts +3 -1
  41. package/{dist/schema → schema}/SchemaComparator.js +58 -10
  42. package/{dist/schema → schema}/SchemaGenerator.d.ts +11 -9
  43. package/{dist/schema → schema}/SchemaGenerator.js +81 -28
  44. package/{dist/schema → schema}/SchemaHelper.d.ts +9 -4
  45. package/{dist/schema → schema}/SchemaHelper.js +46 -8
  46. package/{dist/schema → schema}/index.d.ts +0 -0
  47. package/{dist/schema → schema}/index.js +5 -1
  48. package/{dist/typings.d.ts → typings.d.ts} +7 -3
  49. package/{dist/typings.js → typings.js} +0 -0
  50. package/CHANGELOG.md +0 -661
  51. package/dist/AbstractSqlDriver.d.ts +0 -55
  52. package/dist/LICENSE +0 -21
  53. package/dist/package.json +0 -99
@@ -24,25 +24,51 @@ class SchemaHelper {
24
24
  supportsSchemaConstraints() {
25
25
  return true;
26
26
  }
27
- async getPrimaryKeys(connection, indexes, tableName, schemaName) {
28
- const pk = indexes.find(i => i.primary);
29
- return pk ? pk.columnNames : [];
27
+ async getPrimaryKeys(connection, indexes = [], tableName, schemaName) {
28
+ const pks = indexes.filter(i => i.primary).map(pk => pk.columnNames);
29
+ return core_1.Utils.flatten(pks);
30
30
  }
31
31
  async getForeignKeys(connection, tableName, schemaName) {
32
32
  const fks = await connection.execute(this.getForeignKeysSQL(tableName, schemaName));
33
33
  return this.mapForeignKeys(fks, tableName, schemaName);
34
34
  }
35
+ getTableKey(t) {
36
+ const unquote = (str) => str.replace(/['"`]/g, '');
37
+ const parts = t.table_name.split('.');
38
+ if (parts.length > 1) {
39
+ return `${unquote(parts[0])}.${unquote(parts[1])}`;
40
+ }
41
+ if (t.schema_name) {
42
+ return `${unquote(t.schema_name)}.${unquote(t.table_name)}`;
43
+ }
44
+ return unquote(t.table_name);
45
+ }
35
46
  async getEnumDefinitions(connection, checks, tableName, schemaName) {
36
47
  return {};
37
48
  }
49
+ async loadInformationSchema(schema, connection, tables) {
50
+ for (const t of tables) {
51
+ const table = schema.addTable(t.table_name, t.schema_name);
52
+ table.comment = t.table_comment;
53
+ const cols = await this.getColumns(connection, table.name, table.schema);
54
+ const indexes = await this.getIndexes(connection, table.name, table.schema);
55
+ const checks = await this.getChecks(connection, table.name, table.schema, cols);
56
+ const pks = await this.getPrimaryKeys(connection, indexes, table.name, table.schema);
57
+ const fks = await this.getForeignKeys(connection, table.name, table.schema);
58
+ const enums = await this.getEnumDefinitions(connection, checks, table.name, table.schema);
59
+ table.init(cols, indexes, checks, pks, fks, enums);
60
+ }
61
+ }
38
62
  getListTablesSQL(schemaName) {
39
63
  throw new Error('Not supported by given driver');
40
64
  }
41
- getRenameColumnSQL(tableName, oldColumnName, to) {
65
+ getRenameColumnSQL(tableName, oldColumnName, to, schemaName) {
42
66
  tableName = this.platform.quoteIdentifier(tableName);
43
67
  oldColumnName = this.platform.quoteIdentifier(oldColumnName);
44
68
  const columnName = this.platform.quoteIdentifier(to.name);
45
- return `alter table ${tableName} rename column ${oldColumnName} to ${columnName}`;
69
+ const schemaReference = (schemaName !== undefined && schemaName !== 'public') ? ('"' + schemaName + '".') : '';
70
+ const tableReference = schemaReference + tableName;
71
+ return `alter table ${tableReference} rename column ${oldColumnName} to ${columnName}`;
46
72
  }
47
73
  getCreateIndexSQL(tableName, index) {
48
74
  /* istanbul ignore if */
@@ -59,13 +85,22 @@ class SchemaHelper {
59
85
  getRenameIndexSQL(tableName, index, oldIndexName) {
60
86
  return [this.getDropIndexSQL(tableName, { ...index, keyName: oldIndexName }), this.getCreateIndexSQL(tableName, index)].join(';\n');
61
87
  }
88
+ hasNonDefaultPrimaryKeyName(table) {
89
+ const pkIndex = table.getPrimaryKey();
90
+ if (!pkIndex || !this.platform.supportsCustomPrimaryKeyNames()) {
91
+ return false;
92
+ }
93
+ const defaultName = this.platform.getDefaultPrimaryName(table.name, pkIndex.columnNames);
94
+ return pkIndex?.keyName !== defaultName;
95
+ }
62
96
  createTableColumn(table, column, fromTable, changedProperties) {
63
97
  const compositePK = fromTable.getPrimaryKey()?.composite;
64
98
  if (column.autoincrement && !compositePK && (!changedProperties || changedProperties.has('autoincrement') || changedProperties.has('type'))) {
99
+ const primaryKey = !changedProperties && !this.hasNonDefaultPrimaryKeyName(fromTable);
65
100
  if (column.mappedType instanceof core_1.BigIntType) {
66
- return table.bigIncrements(column.name, { primaryKey: !changedProperties });
101
+ return table.bigIncrements(column.name, { primaryKey });
67
102
  }
68
- return table.increments(column.name, { primaryKey: !changedProperties });
103
+ return table.increments(column.name, { primaryKey });
69
104
  }
70
105
  if (column.mappedType instanceof core_1.EnumType && column.enumItems?.every(item => core_1.Utils.isString(item))) {
71
106
  return table.enum(column.name, column.enumItems);
@@ -100,13 +135,16 @@ class SchemaHelper {
100
135
  getChangeColumnCommentSQL(tableName, to) {
101
136
  return '';
102
137
  }
138
+ async getNamespaces(connection) {
139
+ return [];
140
+ }
103
141
  async getColumns(connection, tableName, schemaName) {
104
142
  throw new Error('Not supported by given driver');
105
143
  }
106
144
  async getIndexes(connection, tableName, schemaName) {
107
145
  throw new Error('Not supported by given driver');
108
146
  }
109
- async getChecks(connection, tableName, schemaName) {
147
+ async getChecks(connection, tableName, schemaName, columns) {
110
148
  throw new Error('Not supported by given driver');
111
149
  }
112
150
  async mapIndexes(indexes) {
File without changes
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -7,10 +7,11 @@ export interface Table {
7
7
  schema_name?: string;
8
8
  table_comment?: string;
9
9
  }
10
- export declare type KnexStringRef = Knex.Ref<string, {
10
+ export type KnexStringRef = Knex.Ref<string, {
11
11
  [alias: string]: string;
12
12
  }>;
13
- export declare type Field<T> = string | keyof T | KnexStringRef | Knex.QueryBuilder;
13
+ type AnyString = string & {};
14
+ export type Field<T> = AnyString | keyof T | KnexStringRef | Knex.QueryBuilder;
14
15
  export interface JoinOptions {
15
16
  table: string;
16
17
  schema?: string;
@@ -42,6 +43,7 @@ export interface Column {
42
43
  unique?: boolean;
43
44
  /** mysql only */
44
45
  extra?: string;
46
+ ignoreSchemaChanges?: ('type' | 'extra')[];
45
47
  }
46
48
  export interface ForeignKey {
47
49
  columnNames: string[];
@@ -81,6 +83,7 @@ export interface TableDifference {
81
83
  name: string;
82
84
  changedComment?: string;
83
85
  fromTable: DatabaseTable;
86
+ toTable: DatabaseTable;
84
87
  addedColumns: Dictionary<Column>;
85
88
  changedColumns: Dictionary<ColumnDifference>;
86
89
  removedColumns: Dictionary<Column>;
@@ -107,7 +110,7 @@ export interface SchemaDifference {
107
110
  }
108
111
  export interface IQueryBuilder<T> {
109
112
  readonly alias: string;
110
- readonly type: QueryType;
113
+ readonly type?: QueryType;
111
114
  _fields?: Field<T>[];
112
115
  select(fields: Field<T> | Field<T>[], distinct?: boolean): this;
113
116
  addSelect(fields: string | string[]): this;
@@ -148,3 +151,4 @@ export interface ICriteriaNode {
148
151
  getPath(addIndex?: boolean): string;
149
152
  getPivotPath(path: string): string;
150
153
  }
154
+ export {};
File without changes