@mikro-orm/sql 7.3.0-dev.6 → 7.3.0-dev.8

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.
@@ -499,7 +499,9 @@ export class SqliteSchemaHelper extends SchemaHelper {
499
499
  if (Utils.hasObjectKeys(diff.removedChecks) ||
500
500
  Utils.hasObjectKeys(diff.changedChecks) ||
501
501
  Utils.hasObjectKeys(diff.changedForeignKeys) ||
502
- Utils.hasObjectKeys(diff.changedColumns)) {
502
+ Utils.hasObjectKeys(diff.changedColumns) ||
503
+ // sqlite can only add or change a primary key by rebuilding the table
504
+ [...Object.values(diff.addedIndexes), ...Object.values(diff.changedIndexes)].some(index => index.primary)) {
503
505
  return this.getAlterTempTableSQL(diff);
504
506
  }
505
507
  for (const index of Object.values(diff.removedIndexes)) {
@@ -644,10 +646,11 @@ export class SqliteSchemaHelper extends SchemaHelper {
644
646
  first.replace(`create table ${quotedName}`, `create table ${quotedTempName}`),
645
647
  ];
646
648
  const columns = [];
649
+ const renamedFrom = Object.fromEntries(Object.entries(changedTable.renamedColumns).map(([oldName, column]) => [column.name, oldName]));
647
650
  for (const column of changedTable.toTable.getColumns()) {
648
- const fromColumn = changedTable.fromTable.getColumn(column.name);
649
- if (fromColumn) {
650
- columns.push(this.quote(column.name));
651
+ const fromName = renamedFrom[column.name] ?? column.name;
652
+ if (changedTable.fromTable.getColumn(fromName)) {
653
+ columns.push(this.quote(fromName));
651
654
  }
652
655
  else {
653
656
  columns.push(`null as ${this.quote(column.name)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/sql",
3
- "version": "7.3.0-dev.6",
3
+ "version": "7.3.0-dev.8",
4
4
  "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
5
5
  "keywords": [
6
6
  "data-mapper",
@@ -53,7 +53,7 @@
53
53
  "@mikro-orm/core": "^7.2.2"
54
54
  },
55
55
  "peerDependencies": {
56
- "@mikro-orm/core": "7.3.0-dev.6"
56
+ "@mikro-orm/core": "7.3.0-dev.8"
57
57
  },
58
58
  "engines": {
59
59
  "node": ">= 22.17.0"
@@ -474,10 +474,16 @@ export class SchemaHelper {
474
474
  for (const foreignKey of Object.values(diff.changedForeignKeys)) {
475
475
  ret.push(this.createForeignKey(diff.toTable, foreignKey));
476
476
  }
477
- for (const index of Object.values(diff.addedIndexes)) {
478
- ret.push(this.createIndex(index, diff.toTable));
479
- }
480
- for (const index of Object.values(diff.changedIndexes)) {
477
+ for (const index of [...Object.values(diff.addedIndexes), ...Object.values(diff.changedIndexes)]) {
478
+ const addedColumn = diff.addedColumns[index.columnNames[0]];
479
+ // an added autoincrement PK column already declares the primary key inline
480
+ if (index.primary &&
481
+ !index.composite &&
482
+ addedColumn?.autoincrement &&
483
+ addedColumn.primary &&
484
+ !this.hasNonDefaultPrimaryKeyName(diff.toTable)) {
485
+ continue;
486
+ }
481
487
  ret.push(this.createIndex(index, diff.toTable, true));
482
488
  }
483
489
  for (const [oldIndexName, index] of Object.entries(diff.renamedIndexes)) {