typeorm 0.3.17 → 0.3.18-dev.122c897

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 (136) hide show
  1. package/README.md +23 -23
  2. package/browser/driver/DriverUtils.js +2 -5
  3. package/browser/driver/DriverUtils.js.map +1 -1
  4. package/browser/driver/sap/SapDriver.d.ts +8 -0
  5. package/browser/driver/sap/SapDriver.js +14 -3
  6. package/browser/driver/sap/SapDriver.js.map +1 -1
  7. package/browser/driver/sap/SapQueryRunner.d.ts +5 -14
  8. package/browser/driver/sap/SapQueryRunner.js +53 -55
  9. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  10. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +2 -1
  11. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  12. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  13. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  14. package/browser/driver/sqlserver/SqlServerQueryRunner.js +13 -0
  15. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  16. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.d.ts +12 -0
  17. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +3 -0
  18. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -0
  19. package/browser/entity-manager/EntityManager.js +5 -1
  20. package/browser/entity-manager/EntityManager.js.map +1 -1
  21. package/browser/entity-manager/MongoEntityManager.d.ts +5 -1
  22. package/browser/entity-manager/MongoEntityManager.js +7 -0
  23. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  24. package/browser/entity-schema/EntitySchemaOptions.d.ts +4 -0
  25. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  26. package/browser/entity-schema/EntitySchemaTransformer.js +7 -0
  27. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  28. package/browser/error/QueryFailedError.d.ts +3 -3
  29. package/browser/error/QueryFailedError.js.map +1 -1
  30. package/browser/find-options/FindOptionsUtils.js +1 -1
  31. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  32. package/browser/find-options/FindOptionsWhere.d.ts +1 -1
  33. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  34. package/browser/index.d.ts +1 -0
  35. package/browser/index.js +1 -0
  36. package/browser/index.js.map +1 -1
  37. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -0
  38. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  39. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +0 -1
  40. package/browser/naming-strategy/DefaultNamingStrategy.js +0 -3
  41. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  42. package/browser/naming-strategy/NamingStrategyInterface.d.ts +0 -4
  43. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  44. package/browser/persistence/Subject.js +2 -1
  45. package/browser/persistence/Subject.js.map +1 -1
  46. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +6 -2
  47. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  48. package/browser/platform/PlatformTools.js +2 -0
  49. package/browser/platform/PlatformTools.js.map +1 -1
  50. package/browser/query-builder/QueryBuilder.js +1 -1
  51. package/browser/query-builder/QueryBuilder.js.map +1 -1
  52. package/browser/query-builder/SelectQueryBuilder.js +2 -0
  53. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  54. package/browser/repository/MongoRepository.d.ts +5 -1
  55. package/browser/repository/MongoRepository.js +6 -0
  56. package/browser/repository/MongoRepository.js.map +1 -1
  57. package/browser/repository/Repository.d.ts +1 -1
  58. package/browser/repository/Repository.js +9 -5
  59. package/browser/repository/Repository.js.map +1 -1
  60. package/commands/CommandUtils.js +6 -1
  61. package/commands/CommandUtils.js.map +1 -1
  62. package/commands/EntityCreateCommand.d.ts +3 -0
  63. package/commands/EntityCreateCommand.js +7 -0
  64. package/commands/EntityCreateCommand.js.map +1 -1
  65. package/commands/InitCommand.js +1 -1
  66. package/commands/InitCommand.js.map +1 -1
  67. package/commands/MigrationCreateCommand.d.ts +5 -1
  68. package/commands/MigrationCreateCommand.js +6 -1
  69. package/commands/MigrationCreateCommand.js.map +1 -1
  70. package/commands/MigrationGenerateCommand.d.ts +5 -1
  71. package/commands/MigrationGenerateCommand.js +8 -1
  72. package/commands/MigrationGenerateCommand.js.map +1 -1
  73. package/commands/SubscriberCreateCommand.d.ts +3 -0
  74. package/commands/SubscriberCreateCommand.js +7 -0
  75. package/commands/SubscriberCreateCommand.js.map +1 -1
  76. package/driver/DriverUtils.js +2 -5
  77. package/driver/DriverUtils.js.map +1 -1
  78. package/driver/sap/SapDriver.d.ts +8 -0
  79. package/driver/sap/SapDriver.js +15 -4
  80. package/driver/sap/SapDriver.js.map +1 -1
  81. package/driver/sap/SapQueryRunner.d.ts +5 -14
  82. package/driver/sap/SapQueryRunner.js +53 -55
  83. package/driver/sap/SapQueryRunner.js.map +1 -1
  84. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +2 -1
  85. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  86. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  87. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  88. package/driver/sqlserver/SqlServerQueryRunner.js +13 -0
  89. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  90. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.d.ts +12 -0
  91. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +4 -0
  92. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -0
  93. package/entity-manager/EntityManager.js +5 -1
  94. package/entity-manager/EntityManager.js.map +1 -1
  95. package/entity-manager/MongoEntityManager.d.ts +5 -1
  96. package/entity-manager/MongoEntityManager.js +7 -0
  97. package/entity-manager/MongoEntityManager.js.map +1 -1
  98. package/entity-schema/EntitySchemaOptions.d.ts +4 -0
  99. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  100. package/entity-schema/EntitySchemaTransformer.js +7 -0
  101. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  102. package/error/QueryFailedError.d.ts +3 -3
  103. package/error/QueryFailedError.js.map +1 -1
  104. package/find-options/FindOptionsUtils.js +1 -1
  105. package/find-options/FindOptionsUtils.js.map +1 -1
  106. package/find-options/FindOptionsWhere.d.ts +1 -1
  107. package/find-options/FindOptionsWhere.js.map +1 -1
  108. package/index.d.ts +1 -0
  109. package/index.js +1 -0
  110. package/index.js.map +1 -1
  111. package/index.mjs +2 -0
  112. package/metadata-builder/EntityMetadataBuilder.js +13 -0
  113. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  114. package/naming-strategy/DefaultNamingStrategy.d.ts +0 -1
  115. package/naming-strategy/DefaultNamingStrategy.js +0 -3
  116. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  117. package/naming-strategy/NamingStrategyInterface.d.ts +0 -4
  118. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  119. package/package.json +1 -271
  120. package/persistence/Subject.js +2 -1
  121. package/persistence/Subject.js.map +1 -1
  122. package/persistence/subject-builder/ManyToManySubjectBuilder.js +6 -2
  123. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  124. package/platform/PlatformTools.js +2 -0
  125. package/platform/PlatformTools.js.map +1 -1
  126. package/query-builder/QueryBuilder.js +1 -1
  127. package/query-builder/QueryBuilder.js.map +1 -1
  128. package/query-builder/SelectQueryBuilder.js +2 -0
  129. package/query-builder/SelectQueryBuilder.js.map +1 -1
  130. package/repository/MongoRepository.d.ts +5 -1
  131. package/repository/MongoRepository.js +6 -0
  132. package/repository/MongoRepository.js.map +1 -1
  133. package/repository/Repository.d.ts +1 -1
  134. package/repository/Repository.js +9 -5
  135. package/repository/Repository.js.map +1 -1
  136. package/typeorm-model-shim.js +61 -53
@@ -194,7 +194,19 @@ export class SapQueryRunner extends BaseQueryRunner {
194
194
  * Returns raw data stream.
195
195
  */
196
196
  async stream(query, parameters, onEnd, onError) {
197
- throw new TypeORMError(`Stream is not supported by SAP driver.`);
197
+ if (this.isReleased)
198
+ throw new QueryRunnerAlreadyReleasedError();
199
+ const databaseConnection = await this.connect();
200
+ this.driver.connection.logger.logQuery(query, parameters, this);
201
+ const prepareAsync = promisify(databaseConnection.prepare).bind(databaseConnection);
202
+ const statement = await prepareAsync(query);
203
+ const resultSet = statement.executeQuery(parameters);
204
+ const stream = this.driver.streamClient.createObjectStream(resultSet);
205
+ if (onEnd)
206
+ stream.on("end", onEnd);
207
+ if (onError)
208
+ stream.on("error", onError);
209
+ return stream;
198
210
  }
199
211
  /**
200
212
  * Returns all available database names including system databases.
@@ -262,7 +274,7 @@ export class SapQueryRunner extends BaseQueryRunner {
262
274
  if (!parsedTableName.schema) {
263
275
  parsedTableName.schema = await this.getCurrentSchema();
264
276
  }
265
- const sql = `SELECT * FROM "SYS"."TABLE_COLUMNS" WHERE "SCHEMA_NAME" = ${parsedTableName.schema} AND "TABLE_NAME" = ${parsedTableName.tableName} AND "COLUMN_NAME" = '${columnName}'`;
277
+ const sql = `SELECT * FROM "SYS"."TABLE_COLUMNS" WHERE "SCHEMA_NAME" = '${parsedTableName.schema}' AND "TABLE_NAME" = '${parsedTableName.tableName}' AND "COLUMN_NAME" = '${columnName}'`;
266
278
  const result = await this.query(sql);
267
279
  return result.length ? true : false;
268
280
  }
@@ -744,9 +756,15 @@ export class SapQueryRunner extends BaseQueryRunner {
744
756
  clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name;
745
757
  oldColumn.name = newColumn.name;
746
758
  }
747
- if (this.isColumnChanged(oldColumn, newColumn)) {
748
- upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(newColumn)})`));
749
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(oldColumn)})`));
759
+ if (this.isColumnChanged(oldColumn, newColumn, true)) {
760
+ upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(newColumn, !(oldColumn.default === null ||
761
+ oldColumn.default === undefined), !oldColumn.isNullable)})`));
762
+ downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER (${this.buildCreateColumnSql(oldColumn, !(newColumn.default === null ||
763
+ newColumn.default === undefined), !newColumn.isNullable)})`));
764
+ }
765
+ else if (oldColumn.comment !== newColumn.comment) {
766
+ upQueries.push(new Query(`COMMENT ON COLUMN ${this.escapePath(table)}."${oldColumn.name}" IS ${this.escapeComment(newColumn.comment)}`));
767
+ downQueries.push(new Query(`COMMENT ON COLUMN ${this.escapePath(table)}."${newColumn.name}" IS ${this.escapeComment(oldColumn.comment)}`));
750
768
  }
751
769
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
752
770
  const primaryColumns = clonedTable.primaryColumns;
@@ -818,24 +836,6 @@ export class SapQueryRunner extends BaseQueryRunner {
818
836
  downQueries.push(this.createIndexSql(table, uniqueIndex));
819
837
  }
820
838
  }
821
- if (newColumn.default !== oldColumn.default) {
822
- if (newColumn.default !== null &&
823
- newColumn.default !== undefined) {
824
- upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER ("${newColumn.name}" ${this.connection.driver.createFullType(newColumn)} DEFAULT ${newColumn.default})`));
825
- if (oldColumn.default !== null &&
826
- oldColumn.default !== undefined) {
827
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER ("${oldColumn.name}" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));
828
- }
829
- else {
830
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER ("${oldColumn.name}" ${this.connection.driver.createFullType(oldColumn)} DEFAULT NULL)`));
831
- }
832
- }
833
- else if (oldColumn.default !== null &&
834
- oldColumn.default !== undefined) {
835
- upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER ("${newColumn.name}" ${this.connection.driver.createFullType(newColumn)} DEFAULT NULL)`));
836
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER ("${oldColumn.name}" ${this.connection.driver.createFullType(oldColumn)} DEFAULT ${oldColumn.default})`));
837
- }
838
- }
839
839
  await this.executeQueries(upQueries, downQueries);
840
840
  this.replaceCachedTable(table, clonedTable);
841
841
  }
@@ -1620,7 +1620,9 @@ export class SapQueryRunner extends BaseQueryRunner {
1620
1620
  dbColumn["DEFAULT_VALUE"];
1621
1621
  }
1622
1622
  }
1623
- tableColumn.comment = ""; // dbColumn["COLUMN_COMMENT"];
1623
+ if (dbColumn["COMMENTS"]) {
1624
+ tableColumn.comment = dbColumn["COMMENTS"];
1625
+ }
1624
1626
  if (dbColumn["character_set_name"])
1625
1627
  tableColumn.charset =
1626
1628
  dbColumn["character_set_name"];
@@ -1954,6 +1956,16 @@ export class SapQueryRunner extends BaseQueryRunner {
1954
1956
  : foreignKeyOrName;
1955
1957
  return new Query(`ALTER TABLE ${this.escapePath(tableOrName)} DROP CONSTRAINT "${foreignKeyName}"`);
1956
1958
  }
1959
+ /**
1960
+ * Escapes a given comment so it's safe to include in a query.
1961
+ */
1962
+ escapeComment(comment) {
1963
+ if (!comment) {
1964
+ return "NULL";
1965
+ }
1966
+ comment = comment.replace(/'/g, "''").replace(/\u0000/g, ""); // Null bytes aren't allowed in comments
1967
+ return `'${comment}'`;
1968
+ }
1957
1969
  /**
1958
1970
  * Escapes given table or view path.
1959
1971
  */
@@ -1964,49 +1976,35 @@ export class SapQueryRunner extends BaseQueryRunner {
1964
1976
  }
1965
1977
  return `"${tableName}"`;
1966
1978
  }
1967
- /**
1968
- * Concat database name and schema name to the foreign key name.
1969
- * Needs because FK name is relevant to the schema and database.
1970
- */
1971
- buildForeignKeyName(fkName, schemaName, dbName) {
1972
- let joinedFkName = fkName;
1973
- if (schemaName)
1974
- joinedFkName = schemaName + "." + joinedFkName;
1975
- if (dbName)
1976
- joinedFkName = dbName + "." + joinedFkName;
1977
- return joinedFkName;
1978
- }
1979
- /**
1980
- * Removes parenthesis around default value.
1981
- * Sql server returns default value with parenthesis around, e.g.
1982
- * ('My text') - for string
1983
- * ((1)) - for number
1984
- * (newsequentialId()) - for function
1985
- */
1986
- removeParenthesisFromDefault(defaultValue) {
1987
- if (defaultValue.substr(0, 1) !== "(")
1988
- return defaultValue;
1989
- const normalizedDefault = defaultValue.substr(1, defaultValue.lastIndexOf(")") - 1);
1990
- return this.removeParenthesisFromDefault(normalizedDefault);
1991
- }
1992
1979
  /**
1993
1980
  * Builds a query for create column.
1994
1981
  */
1995
- buildCreateColumnSql(column) {
1982
+ buildCreateColumnSql(column, explicitDefault, explicitNullable) {
1996
1983
  let c = `"${column.name}" ` + this.connection.driver.createFullType(column);
1997
1984
  if (column.charset)
1998
1985
  c += " CHARACTER SET " + column.charset;
1999
1986
  if (column.collation)
2000
1987
  c += " COLLATE " + column.collation;
2001
- if (column.default !== undefined && column.default !== null)
2002
- // DEFAULT must be placed before NOT NULL
1988
+ if (column.default !== undefined && column.default !== null) {
2003
1989
  c += " DEFAULT " + column.default;
2004
- if (column.isNullable !== true && !column.isGenerated)
1990
+ }
1991
+ else if (explicitDefault) {
1992
+ c += " DEFAULT NULL";
1993
+ }
1994
+ if (!column.isGenerated) {
2005
1995
  // NOT NULL is not supported with GENERATED
2006
- c += " NOT NULL";
1996
+ if (column.isNullable !== true)
1997
+ c += " NOT NULL";
1998
+ else if (explicitNullable)
1999
+ c += " NULL";
2000
+ }
2007
2001
  if (column.isGenerated === true &&
2008
- column.generationStrategy === "increment")
2002
+ column.generationStrategy === "increment") {
2009
2003
  c += " GENERATED ALWAYS AS IDENTITY";
2004
+ }
2005
+ if (column.comment) {
2006
+ c += ` COMMENT ${this.escapeComment(column.comment)}`;
2007
+ }
2010
2008
  return c;
2011
2009
  }
2012
2010
  }