@typetron/framework 0.5.38 → 0.5.39

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.
@@ -11,6 +11,8 @@ export declare class Schema extends BaseSchema {
11
11
  };
12
12
  create(table: string, columns: ColumnField<Entity>[]): Promise<void>;
13
13
  protected syncTableColumns(table: string, columnsMetadata: ColumnField<Entity>[]): Promise<void>;
14
+ /** Columns as SQLite declares them, so an unchanged table is left alone */
15
+ private columnsSignature;
14
16
  private getColumnTypeBasedOnTypescriptType;
15
17
  }
16
18
  //# sourceMappingURL=Schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../../Database/Drivers/SQLite/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AAMpD,qBAAa,MAAO,SAAQ,UAAU;IAElC,gCAAgC,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;;;;;;;;IAWxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;cAO1C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;IAgBtF,OAAO,CAAC,kCAAkC;CAU7C"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../../Database/Drivers/SQLite/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AAMpD,qBAAa,MAAO,SAAQ,UAAU;IAElC,gCAAgC,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;;;;;;;;IAWxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;cAO1C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;IA6BtF,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,kCAAkC;CAU7C"}
@@ -25,17 +25,37 @@ class Schema extends Schema_1.Schema {
25
25
  async syncTableColumns(table, columnsMetadata) {
26
26
  const columns = columnsMetadata.map(metadata => this.columnMetadataToColumnDefinition(metadata));
27
27
  const tableColumns = await this.driver.tableColumns(table);
28
- if (tableColumns.length) {
29
- const temporaryTableName = table + '_alter_tmp';
28
+ if (!tableColumns.length || this.columnsSignature(columns) === this.columnsSignature(tableColumns)) {
29
+ return;
30
+ }
31
+ // SQLite can't alter columns in place, so the table is rebuilt in one transaction:
32
+ // an interrupted rebuild leaves the table as it was instead of a half-copied one.
33
+ const temporaryTableName = table + '_alter_tmp';
34
+ const columnList = (0, Helpers_1.wrap)(columns.whereIn('name', tableColumns.pluck('name')).pluck('name'));
35
+ await this.driver.run('BEGIN IMMEDIATE');
36
+ try {
37
+ // Rebuilds interrupted before this fix could leave one behind
38
+ await this.driver.run(`DROP TABLE IF EXISTS ${temporaryTableName}`);
30
39
  await this.create(temporaryTableName, columnsMetadata);
31
- const columnList = (0, Helpers_1.wrap)(columns.whereIn('name', tableColumns.pluck('name')).pluck('name'));
32
40
  await this.driver.run(`INSERT INTO ${temporaryTableName}(${columnList})
33
41
  SELECT ${columnList}
34
42
  FROM ${table}`);
35
43
  await this.driver.run(`DROP TABLE ${table}`);
36
44
  await this.driver.run(`ALTER TABLE ${temporaryTableName} RENAME TO ${table}`);
45
+ await this.driver.run('COMMIT');
46
+ }
47
+ catch (error) {
48
+ await this.driver.run('ROLLBACK');
49
+ throw error;
37
50
  }
38
51
  }
52
+ /** Columns as SQLite declares them, so an unchanged table is left alone */
53
+ columnsSignature(columns) {
54
+ return columns
55
+ .map(column => `${column.name}:${column.type.toLowerCase()}:${Number(Boolean(column.primaryKey))}`)
56
+ .sort()
57
+ .join(',');
58
+ }
39
59
  getColumnTypeBasedOnTypescriptType(column) {
40
60
  const typePrototype = Array.from(_1.typesMatches.keys())
41
61
  .find(key => column.type().prototype instanceof key) || String;
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../../Database/Drivers/SQLite/Schema.ts"],"names":[],"mappings":";;;AAAA,6BAAyD;AACzD,0CAAoD;AACpD,qCAAiC;AACjC,wBAAgC;AAEhC,2CAAoC;AAEpC,MAAa,MAAO,SAAQ,eAAU;IAElC,gCAAgC,CAAC,QAA6B;QAC1D,OAAO;YACH,IAAI,EAAE,QAAQ,CAAC,MAAM;YACrB,UAAU,EAAE,QAAQ,CAAC,WAAW,KAAK,gBAAY;YACjD,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,gBAAY,CAAC;YAC5D,IAAI,EAAE,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC;YACvD,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,IAAI;SACjB,CAAA;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA8B;QACtD,MAAM,kBAAkB,GAA8B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1H,MAAM,eAAe,GAAG,IAAI,eAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;QAE7D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,eAAsC;QAClF,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAE1D,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAG,KAAK,GAAG,YAAY,CAAA;YAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAA;YACtD,MAAM,UAAU,GAAG,IAAA,cAAI,EAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1F,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,kBAAkB,IAAI,UAAU;4CACrC,UAAU;0CACZ,KAAK,EAAE,CAAC,CAAA;YACtC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC,CAAA;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,kBAAkB,cAAc,KAAK,EAAE,CAAC,CAAA;QACjF,CAAC;IACL,CAAC;IAEO,kCAAkC,CAAC,MAA2B;QAClE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,eAAY,CAAC,IAAI,EAAE,CAAC;aAChD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,YAAY,GAAG,CAAC,IAAI,MAAM,CAAA;QAElE,OAAO,eAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;eAC/B,eAAY,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;eACpC,eAAY,CAAC,GAAG,CAAC,aAAa,CAAC;eAC/B,eAAY,CAAC,GAAG,CAAC,MAAM,CAAW,CAAA;IAC7C,CAAC;CAEJ;AA9CD,wBA8CC"}
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../../Database/Drivers/SQLite/Schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typetron/framework",
3
3
  "description": "Modern Node.js framework for modern apps written in Typescript",
4
4
  "license": "MIT",
5
- "version": "0.5.38",
5
+ "version": "0.5.39",
6
6
  "keywords": [
7
7
  "typetron",
8
8
  "framework",