typeorm 0.3.8-dev.e49d0c8 → 0.3.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.
Files changed (106) hide show
  1. package/browser/cli-ts-node-commonjs.js +0 -0
  2. package/browser/cli-ts-node-esm.js +0 -0
  3. package/browser/data-source/DataSource.d.ts +2 -0
  4. package/browser/data-source/DataSource.js +2 -0
  5. package/browser/data-source/DataSource.js.map +1 -1
  6. package/browser/driver/Driver.d.ts +4 -0
  7. package/browser/driver/Driver.js.map +1 -1
  8. package/browser/driver/DriverUtils.d.ts +1 -0
  9. package/browser/driver/DriverUtils.js +5 -0
  10. package/browser/driver/DriverUtils.js.map +1 -1
  11. package/browser/driver/mysql/MysqlDriver.d.ts +4 -0
  12. package/browser/driver/mysql/MysqlDriver.js +1 -0
  13. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  14. package/browser/driver/postgres/PostgresDriver.d.ts +4 -0
  15. package/browser/driver/postgres/PostgresDriver.js +3 -2
  16. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  17. package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  18. package/browser/driver/postgres/PostgresQueryRunner.js +18 -12
  19. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  20. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
  21. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +16 -12
  22. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  23. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +6 -1
  24. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  25. package/browser/entity-manager/EntityManager.js +1 -0
  26. package/browser/entity-manager/EntityManager.js.map +1 -1
  27. package/browser/find-options/FindOneOptions.d.ts +1 -0
  28. package/browser/find-options/FindOneOptions.js.map +1 -1
  29. package/browser/migration/MigrationExecutor.d.ts +8 -0
  30. package/browser/migration/MigrationExecutor.js +13 -5
  31. package/browser/migration/MigrationExecutor.js.map +1 -1
  32. package/browser/persistence/SubjectTopoligicalSorter.js +6 -1
  33. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  34. package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
  35. package/browser/query-builder/QueryExpressionMap.js +1 -0
  36. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  37. package/browser/query-builder/SelectQueryBuilder.d.ts +4 -0
  38. package/browser/query-builder/SelectQueryBuilder.js +57 -18
  39. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  40. package/browser/query-builder/UpdateQueryBuilder.js +1 -0
  41. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  42. package/browser/schema-builder/options/TableOptions.d.ts +4 -0
  43. package/browser/schema-builder/options/TableOptions.js.map +1 -1
  44. package/browser/schema-builder/table/Table.d.ts +4 -0
  45. package/browser/schema-builder/table/Table.js +8 -0
  46. package/browser/schema-builder/table/Table.js.map +1 -1
  47. package/browser/util/DateUtils.d.ts +1 -1
  48. package/browser/util/DateUtils.js +7 -8
  49. package/browser/util/DateUtils.js.map +1 -1
  50. package/cli-ts-node-commonjs.js +0 -0
  51. package/cli-ts-node-esm.js +0 -0
  52. package/cli.js +0 -0
  53. package/commands/MigrationRevertCommand.d.ts +2 -0
  54. package/commands/MigrationRevertCommand.js +6 -0
  55. package/commands/MigrationRevertCommand.js.map +1 -1
  56. package/commands/MigrationRunCommand.d.ts +2 -0
  57. package/commands/MigrationRunCommand.js +8 -0
  58. package/commands/MigrationRunCommand.js.map +1 -1
  59. package/data-source/DataSource.d.ts +2 -0
  60. package/data-source/DataSource.js +2 -0
  61. package/data-source/DataSource.js.map +1 -1
  62. package/driver/Driver.d.ts +4 -0
  63. package/driver/Driver.js.map +1 -1
  64. package/driver/DriverUtils.d.ts +1 -0
  65. package/driver/DriverUtils.js +5 -0
  66. package/driver/DriverUtils.js.map +1 -1
  67. package/driver/mysql/MysqlDriver.d.ts +4 -0
  68. package/driver/mysql/MysqlDriver.js +1 -0
  69. package/driver/mysql/MysqlDriver.js.map +1 -1
  70. package/driver/postgres/PostgresDriver.d.ts +4 -0
  71. package/driver/postgres/PostgresDriver.js +3 -2
  72. package/driver/postgres/PostgresDriver.js.map +1 -1
  73. package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  74. package/driver/postgres/PostgresQueryRunner.js +18 -12
  75. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  76. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
  77. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +16 -12
  78. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  79. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +6 -1
  80. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  81. package/entity-manager/EntityManager.js +1 -0
  82. package/entity-manager/EntityManager.js.map +1 -1
  83. package/find-options/FindOneOptions.d.ts +1 -0
  84. package/find-options/FindOneOptions.js.map +1 -1
  85. package/migration/MigrationExecutor.d.ts +8 -0
  86. package/migration/MigrationExecutor.js +13 -5
  87. package/migration/MigrationExecutor.js.map +1 -1
  88. package/package.json +274 -1
  89. package/persistence/SubjectTopoligicalSorter.js +6 -1
  90. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  91. package/query-builder/QueryExpressionMap.d.ts +4 -0
  92. package/query-builder/QueryExpressionMap.js +1 -0
  93. package/query-builder/QueryExpressionMap.js.map +1 -1
  94. package/query-builder/SelectQueryBuilder.d.ts +4 -0
  95. package/query-builder/SelectQueryBuilder.js +57 -18
  96. package/query-builder/SelectQueryBuilder.js.map +1 -1
  97. package/query-builder/UpdateQueryBuilder.js +1 -0
  98. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  99. package/schema-builder/options/TableOptions.d.ts +4 -0
  100. package/schema-builder/options/TableOptions.js.map +1 -1
  101. package/schema-builder/table/Table.d.ts +4 -0
  102. package/schema-builder/table/Table.js +8 -0
  103. package/schema-builder/table/Table.js.map +1 -1
  104. package/util/DateUtils.d.ts +1 -1
  105. package/util/DateUtils.js +7 -8
  106. package/util/DateUtils.js.map +1 -1
@@ -316,6 +316,7 @@ class UpdateQueryBuilder extends QueryBuilder_1.QueryBuilder {
316
316
  let value = column.getEntityValue(valuesSetNormalized);
317
317
  if (column.referencedColumn &&
318
318
  typeof value === "object" &&
319
+ !(value instanceof Date) &&
319
320
  value !== null &&
320
321
  !Buffer.isBuffer(value)) {
321
322
  value =
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/UpdateQueryBuilder.ts"],"names":[],"mappings":"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","file":"UpdateQueryBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { WhereExpressionBuilder } from \"./WhereExpressionBuilder\"\nimport { Brackets } from \"./Brackets\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\"\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\"\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\"\nimport { OrderByCondition } from \"../find-options/OrderByCondition\"\nimport { LimitOnUpdateNotSupportedError } from \"../error/LimitOnUpdateNotSupportedError\"\nimport { UpdateValuesMissingError } from \"../error/UpdateValuesMissingError\"\nimport { QueryDeepPartialEntity } from \"./QueryPartialEntity\"\nimport { AuroraMysqlDriver } from \"../driver/aurora-mysql/AuroraMysqlDriver\"\nimport { TypeORMError } from \"../error\"\nimport { EntityPropertyNotFoundError } from \"../error/EntityPropertyNotFoundError\"\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class UpdateQueryBuilder<Entity extends ObjectLiteral>\n extends QueryBuilder<Entity>\n implements WhereExpressionBuilder\n{\n readonly \"@instanceof\" = Symbol.for(\"UpdateQueryBuilder\")\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n connectionOrQueryBuilder: DataSource | QueryBuilder<any>,\n queryRunner?: QueryRunner,\n ) {\n super(connectionOrQueryBuilder as any, queryRunner)\n this.expressionMap.aliasNamePrefixingEnabled = false\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createComment()\n sql += this.createCteExpression()\n sql += this.createUpdateExpression()\n sql += this.createOrderByExpression()\n sql += this.createLimitExpression()\n return sql.trim()\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner()\n let transactionStartedByUs: boolean = false\n\n try {\n // start transaction if it was enabled\n if (\n this.expressionMap.useTransaction === true &&\n queryRunner.isTransactionActive === false\n ) {\n await queryRunner.startTransaction()\n transactionStartedByUs = true\n }\n\n // call before updation methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n await queryRunner.broadcaster.broadcast(\n \"BeforeUpdate\",\n this.expressionMap.mainAlias!.metadata,\n this.expressionMap.valuesSet,\n )\n }\n\n let declareSql: string | null = null\n let selectOutputSql: string | null = null\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator =\n new ReturningResultsEntityUpdator(\n queryRunner,\n this.expressionMap,\n )\n\n const returningColumns: ColumnMetadata[] = []\n\n if (\n Array.isArray(this.expressionMap.returning) &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(\n columnPath,\n ),\n )\n }\n }\n\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0\n ) {\n this.expressionMap.extraReturningColumns =\n returningResultsEntityUpdator.getUpdationReturningColumns()\n\n returningColumns.push(\n ...this.expressionMap.extraReturningColumns.filter(\n (c) => !returningColumns.includes(c),\n ),\n )\n }\n\n if (\n returningColumns.length > 0 &&\n this.connection.driver.options.type === \"mssql\"\n ) {\n declareSql = (\n this.connection.driver as SqlServerDriver\n ).buildTableVariableDeclaration(\n \"@OutputTable\",\n returningColumns,\n )\n selectOutputSql = `SELECT * FROM @OutputTable`\n }\n\n // execute update query\n const [updateSql, parameters] = this.getQueryAndParameters()\n\n const statements = [declareSql, updateSql, selectOutputSql]\n const queryResult = await queryRunner.query(\n statements.filter((sql) => sql != null).join(\";\\n\\n\"),\n parameters,\n true,\n )\n const updateResult = UpdateResult.from(queryResult)\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0\n ) {\n await returningResultsEntityUpdator.update(\n updateResult,\n this.expressionMap.whereEntities,\n )\n }\n\n // call after updation methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n await queryRunner.broadcaster.broadcast(\n \"AfterUpdate\",\n this.expressionMap.mainAlias!.metadata,\n this.expressionMap.valuesSet,\n )\n }\n\n // close transaction if we started it\n if (transactionStartedByUs) await queryRunner.commitTransaction()\n\n return updateResult\n } catch (error) {\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction()\n } catch (rollbackError) {}\n }\n throw error\n } finally {\n if (queryRunner !== this.queryRunner) {\n // means we created our own query runner\n await queryRunner.release()\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Values needs to be updated.\n */\n set(values: QueryDeepPartialEntity<Entity>): this {\n this.expressionMap.valuesSet = values\n return this\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres = [] // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where)\n if (condition)\n this.expressionMap.wheres = [\n { type: \"simple\", condition: condition },\n ]\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres.push({\n type: \"and\",\n condition: this.getWhereCondition(where),\n })\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres.push({\n type: \"or\",\n condition: this.getWhereCondition(where),\n })\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Sets WHERE condition in the query builder with a condition for the given ids.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n */\n whereInIds(ids: any | any[]): this {\n return this.where(this.getWhereInIdsCondition(ids))\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any | any[]): this {\n return this.andWhere(this.getWhereInIdsCondition(ids))\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any | any[]): this {\n return this.orWhere(this.getWhereInIdsCondition(ids))\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this\n\n /**\n * Optional returning/output clause.\n */\n output(output: string | string[]): this\n\n /**\n * Optional returning/output clause.\n */\n output(output: string | string[]): this {\n return this.returning(output)\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string | string[]): this\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string | string[]): this {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported(\"update\")) {\n throw new ReturningStatementNotSupportedError()\n }\n\n this.expressionMap.returning = returning\n return this\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(\n sort: string,\n order?: \"ASC\" | \"DESC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(\n sort?: string | OrderByCondition,\n order: \"ASC\" | \"DESC\" = \"ASC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this {\n if (sort) {\n if (typeof sort === \"object\") {\n this.expressionMap.orderBys = sort as OrderByCondition\n } else {\n if (nulls) {\n this.expressionMap.orderBys = {\n [sort as string]: { order, nulls },\n }\n } else {\n this.expressionMap.orderBys = { [sort as string]: order }\n }\n }\n } else {\n this.expressionMap.orderBys = {}\n }\n return this\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(\n sort: string,\n order: \"ASC\" | \"DESC\" = \"ASC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls }\n } else {\n this.expressionMap.orderBys[sort] = order\n }\n return this\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit\n return this\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity | Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new TypeORMError(\n `.whereEntity method can only be used on queries which update real entity table.`,\n )\n\n this.expressionMap.wheres = []\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity]\n entities.forEach((entity) => {\n const entityIdMap =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity)\n if (!entityIdMap)\n throw new TypeORMError(\n `Provided entity does not have ids set, cannot perform operation.`,\n )\n\n this.orWhereInIds(entityIdMap)\n })\n\n this.expressionMap.whereEntities = entities\n return this\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled\n return this\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const valuesSet = this.getValueSet()\n const metadata = this.expressionMap.mainAlias!.hasMetadata\n ? this.expressionMap.mainAlias!.metadata\n : undefined\n\n // it doesn't make sense to update undefined properties, so just skip them\n const valuesSetNormalized: ObjectLiteral = {}\n for (let key in valuesSet) {\n if (valuesSet[key] !== undefined) {\n valuesSetNormalized[key] = valuesSet[key]\n }\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = []\n const updatedColumns: ColumnMetadata[] = []\n if (metadata) {\n this.createPropertyPath(metadata, valuesSetNormalized).forEach(\n (propertyPath) => {\n // todo: make this and other query builder to work with properly with tables without metadata\n const columns =\n metadata.findColumnsWithPropertyPath(propertyPath)\n\n if (columns.length <= 0) {\n throw new EntityPropertyNotFoundError(\n propertyPath,\n metadata,\n )\n }\n\n columns.forEach((column) => {\n if (\n !column.isUpdate ||\n updatedColumns.includes(column)\n ) {\n return\n }\n\n updatedColumns.push(column)\n\n //\n let value = column.getEntityValue(valuesSetNormalized)\n if (\n column.referencedColumn &&\n typeof value === \"object\" &&\n value !== null &&\n !Buffer.isBuffer(value)\n ) {\n value =\n column.referencedColumn.getEntityValue(value)\n } else if (!(typeof value === \"function\")) {\n value =\n this.connection.driver.preparePersistentValue(\n value,\n column,\n )\n }\n\n // todo: duplication zone\n if (typeof value === \"function\") {\n // support for SQL expressions in update query\n updateColumnAndValues.push(\n this.escape(column.databaseName) +\n \" = \" +\n value(),\n )\n } else if (\n (this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type ===\n \"spanner\") &&\n value === null\n ) {\n updateColumnAndValues.push(\n this.escape(column.databaseName) + \" = NULL\",\n )\n } else {\n if (\n this.connection.driver.options.type === \"mssql\"\n ) {\n value = (\n this.connection.driver as SqlServerDriver\n ).parametrizeValue(column, value)\n }\n\n const paramName = this.createParameter(value)\n\n let expression = null\n if (\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n const useLegacy = (\n this.connection.driver as\n | MysqlDriver\n | AuroraMysqlDriver\n ).options.legacySpatialSupport\n const geomFromText = useLegacy\n ? \"GeomFromText\"\n : \"ST_GeomFromText\"\n if (column.srid != null) {\n expression = `${geomFromText}(${paramName}, ${column.srid})`\n } else {\n expression = `${geomFromText}(${paramName})`\n }\n } else if (\n this.connection.driver.options.type ===\n \"postgres\" &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n if (column.srid != null) {\n expression = `ST_SetSRID(ST_GeomFromGeoJSON(${paramName}), ${column.srid})::${column.type}`\n } else {\n expression = `ST_GeomFromGeoJSON(${paramName})::${column.type}`\n }\n } else if (\n this.connection.driver.options.type ===\n \"mssql\" &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n expression =\n column.type +\n \"::STGeomFromText(\" +\n paramName +\n \", \" +\n (column.srid || \"0\") +\n \")\"\n } else {\n expression = paramName\n }\n updateColumnAndValues.push(\n this.escape(column.databaseName) +\n \" = \" +\n expression,\n )\n }\n })\n },\n )\n\n // Don't allow calling update only with columns that are `update: false`\n if (\n updateColumnAndValues.length > 0 ||\n Object.keys(valuesSetNormalized).length === 0\n ) {\n if (\n metadata.versionColumn &&\n updatedColumns.indexOf(metadata.versionColumn) === -1\n )\n updateColumnAndValues.push(\n this.escape(metadata.versionColumn.databaseName) +\n \" = \" +\n this.escape(metadata.versionColumn.databaseName) +\n \" + 1\",\n )\n if (\n metadata.updateDateColumn &&\n updatedColumns.indexOf(metadata.updateDateColumn) === -1\n )\n updateColumnAndValues.push(\n this.escape(metadata.updateDateColumn.databaseName) +\n \" = CURRENT_TIMESTAMP\",\n ) // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n }\n } else {\n Object.keys(valuesSetNormalized).map((key) => {\n let value = valuesSetNormalized[key]\n\n // todo: duplication zone\n if (typeof value === \"function\") {\n // support for SQL expressions in update query\n updateColumnAndValues.push(\n this.escape(key) + \" = \" + value(),\n )\n } else if (\n (this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\") &&\n value === null\n ) {\n updateColumnAndValues.push(this.escape(key) + \" = NULL\")\n } else {\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n const paramName = this.createParameter(value)\n updateColumnAndValues.push(\n this.escape(key) + \" = \" + paramName,\n )\n }\n })\n }\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError()\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression()\n const returningExpression = this.createReturningExpression(\"update\")\n\n if (returningExpression === \"\") {\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\", \")}${whereExpression}` // todo: how do we replace aliases in where to nothing?\n }\n if (this.connection.driver.options.type === \"mssql\") {\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\n \", \",\n )} OUTPUT ${returningExpression}${whereExpression}`\n }\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\n \", \",\n )}${whereExpression} RETURNING ${returningExpression}`\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys\n if (Object.keys(orderBys).length > 0)\n return (\n \" ORDER BY \" +\n Object.keys(orderBys)\n .map((columnName) => {\n if (typeof orderBys[columnName] === \"string\") {\n return (\n this.replacePropertyNames(columnName) +\n \" \" +\n orderBys[columnName]\n )\n } else {\n return (\n this.replacePropertyNames(columnName) +\n \" \" +\n (orderBys[columnName] as any).order +\n \" \" +\n (orderBys[columnName] as any).nulls\n )\n }\n })\n .join(\", \")\n )\n\n return \"\"\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number | undefined = this.expressionMap.limit\n\n if (limit) {\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n return \" LIMIT \" + limit\n } else {\n throw new LimitOnUpdateNotSupportedError()\n }\n }\n\n return \"\"\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSet(): ObjectLiteral {\n if (typeof this.expressionMap.valuesSet === \"object\")\n return this.expressionMap.valuesSet\n\n throw new UpdateValuesMissingError()\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/UpdateQueryBuilder.ts"],"names":[],"mappings":"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","file":"UpdateQueryBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { WhereExpressionBuilder } from \"./WhereExpressionBuilder\"\nimport { Brackets } from \"./Brackets\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\"\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\"\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\"\nimport { OrderByCondition } from \"../find-options/OrderByCondition\"\nimport { LimitOnUpdateNotSupportedError } from \"../error/LimitOnUpdateNotSupportedError\"\nimport { UpdateValuesMissingError } from \"../error/UpdateValuesMissingError\"\nimport { QueryDeepPartialEntity } from \"./QueryPartialEntity\"\nimport { AuroraMysqlDriver } from \"../driver/aurora-mysql/AuroraMysqlDriver\"\nimport { TypeORMError } from \"../error\"\nimport { EntityPropertyNotFoundError } from \"../error/EntityPropertyNotFoundError\"\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class UpdateQueryBuilder<Entity extends ObjectLiteral>\n extends QueryBuilder<Entity>\n implements WhereExpressionBuilder\n{\n readonly \"@instanceof\" = Symbol.for(\"UpdateQueryBuilder\")\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n connectionOrQueryBuilder: DataSource | QueryBuilder<any>,\n queryRunner?: QueryRunner,\n ) {\n super(connectionOrQueryBuilder as any, queryRunner)\n this.expressionMap.aliasNamePrefixingEnabled = false\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createComment()\n sql += this.createCteExpression()\n sql += this.createUpdateExpression()\n sql += this.createOrderByExpression()\n sql += this.createLimitExpression()\n return sql.trim()\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner()\n let transactionStartedByUs: boolean = false\n\n try {\n // start transaction if it was enabled\n if (\n this.expressionMap.useTransaction === true &&\n queryRunner.isTransactionActive === false\n ) {\n await queryRunner.startTransaction()\n transactionStartedByUs = true\n }\n\n // call before updation methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n await queryRunner.broadcaster.broadcast(\n \"BeforeUpdate\",\n this.expressionMap.mainAlias!.metadata,\n this.expressionMap.valuesSet,\n )\n }\n\n let declareSql: string | null = null\n let selectOutputSql: string | null = null\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator =\n new ReturningResultsEntityUpdator(\n queryRunner,\n this.expressionMap,\n )\n\n const returningColumns: ColumnMetadata[] = []\n\n if (\n Array.isArray(this.expressionMap.returning) &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(\n columnPath,\n ),\n )\n }\n }\n\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0\n ) {\n this.expressionMap.extraReturningColumns =\n returningResultsEntityUpdator.getUpdationReturningColumns()\n\n returningColumns.push(\n ...this.expressionMap.extraReturningColumns.filter(\n (c) => !returningColumns.includes(c),\n ),\n )\n }\n\n if (\n returningColumns.length > 0 &&\n this.connection.driver.options.type === \"mssql\"\n ) {\n declareSql = (\n this.connection.driver as SqlServerDriver\n ).buildTableVariableDeclaration(\n \"@OutputTable\",\n returningColumns,\n )\n selectOutputSql = `SELECT * FROM @OutputTable`\n }\n\n // execute update query\n const [updateSql, parameters] = this.getQueryAndParameters()\n\n const statements = [declareSql, updateSql, selectOutputSql]\n const queryResult = await queryRunner.query(\n statements.filter((sql) => sql != null).join(\";\\n\\n\"),\n parameters,\n true,\n )\n const updateResult = UpdateResult.from(queryResult)\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0\n ) {\n await returningResultsEntityUpdator.update(\n updateResult,\n this.expressionMap.whereEntities,\n )\n }\n\n // call after updation methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n await queryRunner.broadcaster.broadcast(\n \"AfterUpdate\",\n this.expressionMap.mainAlias!.metadata,\n this.expressionMap.valuesSet,\n )\n }\n\n // close transaction if we started it\n if (transactionStartedByUs) await queryRunner.commitTransaction()\n\n return updateResult\n } catch (error) {\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction()\n } catch (rollbackError) {}\n }\n throw error\n } finally {\n if (queryRunner !== this.queryRunner) {\n // means we created our own query runner\n await queryRunner.release()\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Values needs to be updated.\n */\n set(values: QueryDeepPartialEntity<Entity>): this {\n this.expressionMap.valuesSet = values\n return this\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres = [] // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where)\n if (condition)\n this.expressionMap.wheres = [\n { type: \"simple\", condition: condition },\n ]\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres.push({\n type: \"and\",\n condition: this.getWhereCondition(where),\n })\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(\n where:\n | string\n | ((qb: this) => string)\n | Brackets\n | ObjectLiteral\n | ObjectLiteral[],\n parameters?: ObjectLiteral,\n ): this {\n this.expressionMap.wheres.push({\n type: \"or\",\n condition: this.getWhereCondition(where),\n })\n if (parameters) this.setParameters(parameters)\n return this\n }\n\n /**\n * Sets WHERE condition in the query builder with a condition for the given ids.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n */\n whereInIds(ids: any | any[]): this {\n return this.where(this.getWhereInIdsCondition(ids))\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any | any[]): this {\n return this.andWhere(this.getWhereInIdsCondition(ids))\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any | any[]): this {\n return this.orWhere(this.getWhereInIdsCondition(ids))\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this\n\n /**\n * Optional returning/output clause.\n */\n output(output: string | string[]): this\n\n /**\n * Optional returning/output clause.\n */\n output(output: string | string[]): this {\n return this.returning(output)\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string | string[]): this\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string | string[]): this {\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported(\"update\")) {\n throw new ReturningStatementNotSupportedError()\n }\n\n this.expressionMap.returning = returning\n return this\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(\n sort: string,\n order?: \"ASC\" | \"DESC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(\n sort?: string | OrderByCondition,\n order: \"ASC\" | \"DESC\" = \"ASC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this {\n if (sort) {\n if (typeof sort === \"object\") {\n this.expressionMap.orderBys = sort as OrderByCondition\n } else {\n if (nulls) {\n this.expressionMap.orderBys = {\n [sort as string]: { order, nulls },\n }\n } else {\n this.expressionMap.orderBys = { [sort as string]: order }\n }\n }\n } else {\n this.expressionMap.orderBys = {}\n }\n return this\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(\n sort: string,\n order: \"ASC\" | \"DESC\" = \"ASC\",\n nulls?: \"NULLS FIRST\" | \"NULLS LAST\",\n ): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls }\n } else {\n this.expressionMap.orderBys[sort] = order\n }\n return this\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit\n return this\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity | Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new TypeORMError(\n `.whereEntity method can only be used on queries which update real entity table.`,\n )\n\n this.expressionMap.wheres = []\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity]\n entities.forEach((entity) => {\n const entityIdMap =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity)\n if (!entityIdMap)\n throw new TypeORMError(\n `Provided entity does not have ids set, cannot perform operation.`,\n )\n\n this.orWhereInIds(entityIdMap)\n })\n\n this.expressionMap.whereEntities = entities\n return this\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled\n return this\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const valuesSet = this.getValueSet()\n const metadata = this.expressionMap.mainAlias!.hasMetadata\n ? this.expressionMap.mainAlias!.metadata\n : undefined\n\n // it doesn't make sense to update undefined properties, so just skip them\n const valuesSetNormalized: ObjectLiteral = {}\n for (let key in valuesSet) {\n if (valuesSet[key] !== undefined) {\n valuesSetNormalized[key] = valuesSet[key]\n }\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = []\n const updatedColumns: ColumnMetadata[] = []\n if (metadata) {\n this.createPropertyPath(metadata, valuesSetNormalized).forEach(\n (propertyPath) => {\n // todo: make this and other query builder to work with properly with tables without metadata\n const columns =\n metadata.findColumnsWithPropertyPath(propertyPath)\n\n if (columns.length <= 0) {\n throw new EntityPropertyNotFoundError(\n propertyPath,\n metadata,\n )\n }\n\n columns.forEach((column) => {\n if (\n !column.isUpdate ||\n updatedColumns.includes(column)\n ) {\n return\n }\n\n updatedColumns.push(column)\n\n //\n let value = column.getEntityValue(valuesSetNormalized)\n if (\n column.referencedColumn &&\n typeof value === \"object\" &&\n !(value instanceof Date) &&\n value !== null &&\n !Buffer.isBuffer(value)\n ) {\n value =\n column.referencedColumn.getEntityValue(value)\n } else if (!(typeof value === \"function\")) {\n value =\n this.connection.driver.preparePersistentValue(\n value,\n column,\n )\n }\n\n // todo: duplication zone\n if (typeof value === \"function\") {\n // support for SQL expressions in update query\n updateColumnAndValues.push(\n this.escape(column.databaseName) +\n \" = \" +\n value(),\n )\n } else if (\n (this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type ===\n \"spanner\") &&\n value === null\n ) {\n updateColumnAndValues.push(\n this.escape(column.databaseName) + \" = NULL\",\n )\n } else {\n if (\n this.connection.driver.options.type === \"mssql\"\n ) {\n value = (\n this.connection.driver as SqlServerDriver\n ).parametrizeValue(column, value)\n }\n\n const paramName = this.createParameter(value)\n\n let expression = null\n if (\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n const useLegacy = (\n this.connection.driver as\n | MysqlDriver\n | AuroraMysqlDriver\n ).options.legacySpatialSupport\n const geomFromText = useLegacy\n ? \"GeomFromText\"\n : \"ST_GeomFromText\"\n if (column.srid != null) {\n expression = `${geomFromText}(${paramName}, ${column.srid})`\n } else {\n expression = `${geomFromText}(${paramName})`\n }\n } else if (\n this.connection.driver.options.type ===\n \"postgres\" &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n if (column.srid != null) {\n expression = `ST_SetSRID(ST_GeomFromGeoJSON(${paramName}), ${column.srid})::${column.type}`\n } else {\n expression = `ST_GeomFromGeoJSON(${paramName})::${column.type}`\n }\n } else if (\n this.connection.driver.options.type ===\n \"mssql\" &&\n this.connection.driver.spatialTypes.indexOf(\n column.type,\n ) !== -1\n ) {\n expression =\n column.type +\n \"::STGeomFromText(\" +\n paramName +\n \", \" +\n (column.srid || \"0\") +\n \")\"\n } else {\n expression = paramName\n }\n updateColumnAndValues.push(\n this.escape(column.databaseName) +\n \" = \" +\n expression,\n )\n }\n })\n },\n )\n\n // Don't allow calling update only with columns that are `update: false`\n if (\n updateColumnAndValues.length > 0 ||\n Object.keys(valuesSetNormalized).length === 0\n ) {\n if (\n metadata.versionColumn &&\n updatedColumns.indexOf(metadata.versionColumn) === -1\n )\n updateColumnAndValues.push(\n this.escape(metadata.versionColumn.databaseName) +\n \" = \" +\n this.escape(metadata.versionColumn.databaseName) +\n \" + 1\",\n )\n if (\n metadata.updateDateColumn &&\n updatedColumns.indexOf(metadata.updateDateColumn) === -1\n )\n updateColumnAndValues.push(\n this.escape(metadata.updateDateColumn.databaseName) +\n \" = CURRENT_TIMESTAMP\",\n ) // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n }\n } else {\n Object.keys(valuesSetNormalized).map((key) => {\n let value = valuesSetNormalized[key]\n\n // todo: duplication zone\n if (typeof value === \"function\") {\n // support for SQL expressions in update query\n updateColumnAndValues.push(\n this.escape(key) + \" = \" + value(),\n )\n } else if (\n (this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\") &&\n value === null\n ) {\n updateColumnAndValues.push(this.escape(key) + \" = NULL\")\n } else {\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n const paramName = this.createParameter(value)\n updateColumnAndValues.push(\n this.escape(key) + \" = \" + paramName,\n )\n }\n })\n }\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError()\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression()\n const returningExpression = this.createReturningExpression(\"update\")\n\n if (returningExpression === \"\") {\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\", \")}${whereExpression}` // todo: how do we replace aliases in where to nothing?\n }\n if (this.connection.driver.options.type === \"mssql\") {\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\n \", \",\n )} OUTPUT ${returningExpression}${whereExpression}`\n }\n return `UPDATE ${this.getTableName(\n this.getMainTableName(),\n )} SET ${updateColumnAndValues.join(\n \", \",\n )}${whereExpression} RETURNING ${returningExpression}`\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys\n if (Object.keys(orderBys).length > 0)\n return (\n \" ORDER BY \" +\n Object.keys(orderBys)\n .map((columnName) => {\n if (typeof orderBys[columnName] === \"string\") {\n return (\n this.replacePropertyNames(columnName) +\n \" \" +\n orderBys[columnName]\n )\n } else {\n return (\n this.replacePropertyNames(columnName) +\n \" \" +\n (orderBys[columnName] as any).order +\n \" \" +\n (orderBys[columnName] as any).nulls\n )\n }\n })\n .join(\", \")\n )\n\n return \"\"\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number | undefined = this.expressionMap.limit\n\n if (limit) {\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n return \" LIMIT \" + limit\n } else {\n throw new LimitOnUpdateNotSupportedError()\n }\n }\n\n return \"\"\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSet(): ObjectLiteral {\n if (typeof this.expressionMap.valuesSet === \"object\")\n return this.expressionMap.valuesSet\n\n throw new UpdateValuesMissingError()\n }\n}\n"],"sourceRoot":".."}
@@ -50,6 +50,10 @@ export interface TableOptions {
50
50
  * for new tables.
51
51
  */
52
52
  justCreated?: boolean;
53
+ /**
54
+ * Enables Sqlite "WITHOUT ROWID" modifier for the "CREATE TABLE" statement
55
+ */
56
+ withoutRowid?: boolean;
53
57
  /**
54
58
  * Table engine.
55
59
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema-builder/options/TableOptions.ts"],"names":[],"mappings":"","file":"TableOptions.js","sourcesContent":["import { TableColumnOptions } from \"./TableColumnOptions\"\nimport { TableIndexOptions } from \"./TableIndexOptions\"\nimport { TableForeignKeyOptions } from \"./TableForeignKeyOptions\"\nimport { TableUniqueOptions } from \"./TableUniqueOptions\"\nimport { TableCheckOptions } from \"./TableCheckOptions\"\nimport { TableExclusionOptions } from \"./TableExclusionOptions\"\n\n/**\n * Table options.\n */\nexport interface TableOptions {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Table schema.\n */\n schema?: string\n\n /**\n * Table database.\n */\n database?: string\n\n /**\n * Table name.\n */\n name: string\n\n /**\n * Table columns.\n */\n columns?: TableColumnOptions[]\n\n /**\n * Table indices.\n */\n indices?: TableIndexOptions[]\n\n /**\n * Table foreign keys.\n */\n foreignKeys?: TableForeignKeyOptions[]\n\n /**\n * Table unique constraints.\n */\n uniques?: TableUniqueOptions[]\n\n /**\n * Table check constraints.\n */\n checks?: TableCheckOptions[]\n\n /**\n * Table check constraints.\n */\n exclusions?: TableExclusionOptions[]\n\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n justCreated?: boolean\n\n /**\n * Table engine.\n */\n engine?: string\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/schema-builder/options/TableOptions.ts"],"names":[],"mappings":"","file":"TableOptions.js","sourcesContent":["import { TableColumnOptions } from \"./TableColumnOptions\"\nimport { TableIndexOptions } from \"./TableIndexOptions\"\nimport { TableForeignKeyOptions } from \"./TableForeignKeyOptions\"\nimport { TableUniqueOptions } from \"./TableUniqueOptions\"\nimport { TableCheckOptions } from \"./TableCheckOptions\"\nimport { TableExclusionOptions } from \"./TableExclusionOptions\"\n\n/**\n * Table options.\n */\nexport interface TableOptions {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Table schema.\n */\n schema?: string\n\n /**\n * Table database.\n */\n database?: string\n\n /**\n * Table name.\n */\n name: string\n\n /**\n * Table columns.\n */\n columns?: TableColumnOptions[]\n\n /**\n * Table indices.\n */\n indices?: TableIndexOptions[]\n\n /**\n * Table foreign keys.\n */\n foreignKeys?: TableForeignKeyOptions[]\n\n /**\n * Table unique constraints.\n */\n uniques?: TableUniqueOptions[]\n\n /**\n * Table check constraints.\n */\n checks?: TableCheckOptions[]\n\n /**\n * Table check constraints.\n */\n exclusions?: TableExclusionOptions[]\n\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n justCreated?: boolean\n\n /**\n * Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement\n */\n withoutRowid?: boolean\n\n /**\n * Table engine.\n */\n engine?: string\n}\n"],"sourceRoot":"../.."}
@@ -56,6 +56,10 @@ export declare class Table {
56
56
  * for new tables.
57
57
  */
58
58
  justCreated: boolean;
59
+ /**
60
+ * Enables Sqlite "WITHOUT ROWID" modifier for the "CREATE TABLE" statement
61
+ */
62
+ withoutRowid?: boolean;
59
63
  /**
60
64
  * Table engine.
61
65
  */
@@ -47,6 +47,10 @@ class Table {
47
47
  * for new tables.
48
48
  */
49
49
  this.justCreated = false;
50
+ /**
51
+ * Enables Sqlite "WITHOUT ROWID" modifier for the "CREATE TABLE" statement
52
+ */
53
+ this.withoutRowid = false;
50
54
  if (options) {
51
55
  this.database = options.database;
52
56
  this.schema = options.schema;
@@ -70,6 +74,8 @@ class Table {
70
74
  this.exclusions = options.exclusions.map((exclusion) => new TableExclusion_1.TableExclusion(exclusion));
71
75
  if (options.justCreated !== undefined)
72
76
  this.justCreated = options.justCreated;
77
+ if (options.withoutRowid)
78
+ this.withoutRowid = options.withoutRowid;
73
79
  this.engine = options.engine;
74
80
  }
75
81
  }
@@ -97,6 +103,7 @@ class Table {
97
103
  checks: this.checks.map((constraint) => constraint.clone()),
98
104
  exclusions: this.exclusions.map((constraint) => constraint.clone()),
99
105
  justCreated: this.justCreated,
106
+ withoutRowid: this.withoutRowid,
100
107
  engine: this.engine,
101
108
  });
102
109
  }
@@ -266,6 +273,7 @@ class Table {
266
273
  database: entityMetadata.database,
267
274
  schema: entityMetadata.schema,
268
275
  name: driver.buildTableName(entityMetadata.tableName, schema, database),
276
+ withoutRowid: entityMetadata.withoutRowid,
269
277
  engine: entityMetadata.engine,
270
278
  columns: entityMetadata.columns
271
279
  .filter((column) => column)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema-builder/table/Table.ts"],"names":[],"mappings":"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","file":"Table.js","sourcesContent":["import { TableColumn } from \"./TableColumn\"\nimport { TableIndex } from \"./TableIndex\"\nimport { TableForeignKey } from \"./TableForeignKey\"\nimport { Driver } from \"../../driver/Driver\"\nimport { TableOptions } from \"../options/TableOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { TableUtils } from \"../util/TableUtils\"\nimport { TableUnique } from \"./TableUnique\"\nimport { TableCheck } from \"./TableCheck\"\nimport { TableExclusion } from \"./TableExclusion\"\n\n/**\n * Table in the database represented in this class.\n */\nexport class Table {\n readonly \"@instanceof\" = Symbol.for(\"Table\")\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database name that this table resides in if it applies.\n */\n database?: string\n\n /**\n * Schema name that this table resides in if it applies.\n */\n schema?: string\n\n /**\n * May contain database name, schema name and table name, unless they're the current database.\n *\n * E.g. myDB.mySchema.myTable\n */\n name: string\n\n /**\n * Table columns.\n */\n columns: TableColumn[] = []\n\n /**\n * Table indices.\n */\n indices: TableIndex[] = []\n\n /**\n * Table foreign keys.\n */\n foreignKeys: TableForeignKey[] = []\n\n /**\n * Table unique constraints.\n */\n uniques: TableUnique[] = []\n\n /**\n * Table check constraints.\n */\n checks: TableCheck[] = []\n\n /**\n * Table exclusion constraints.\n */\n exclusions: TableExclusion[] = []\n\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n justCreated: boolean = false\n\n /**\n * Table engine.\n */\n engine?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options?: TableOptions) {\n if (options) {\n this.database = options.database\n\n this.schema = options.schema\n\n this.name = options.name\n\n if (options.columns)\n this.columns = options.columns.map(\n (column) => new TableColumn(column),\n )\n\n if (options.indices)\n this.indices = options.indices.map(\n (index) => new TableIndex(index),\n )\n\n if (options.foreignKeys)\n this.foreignKeys = options.foreignKeys.map(\n (foreignKey) =>\n new TableForeignKey({\n ...foreignKey,\n referencedDatabase:\n foreignKey?.referencedDatabase ||\n options.database,\n referencedSchema:\n foreignKey?.referencedSchema || options.schema,\n }),\n )\n\n if (options.uniques)\n this.uniques = options.uniques.map(\n (unique) => new TableUnique(unique),\n )\n\n if (options.checks)\n this.checks = options.checks.map(\n (check) => new TableCheck(check),\n )\n\n if (options.exclusions)\n this.exclusions = options.exclusions.map(\n (exclusion) => new TableExclusion(exclusion),\n )\n\n if (options.justCreated !== undefined)\n this.justCreated = options.justCreated\n\n this.engine = options.engine\n }\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n get primaryColumns(): TableColumn[] {\n return this.columns.filter((column) => column.isPrimary)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Clones this table to a new table with all properties cloned.\n */\n clone(): Table {\n return new Table({\n schema: this.schema,\n database: this.database,\n name: this.name,\n columns: this.columns.map((column) => column.clone()),\n indices: this.indices.map((constraint) => constraint.clone()),\n foreignKeys: this.foreignKeys.map((constraint) =>\n constraint.clone(),\n ),\n uniques: this.uniques.map((constraint) => constraint.clone()),\n checks: this.checks.map((constraint) => constraint.clone()),\n exclusions: this.exclusions.map((constraint) => constraint.clone()),\n justCreated: this.justCreated,\n engine: this.engine,\n })\n }\n\n /**\n * Add column and creates its constraints.\n */\n addColumn(column: TableColumn): void {\n this.columns.push(column)\n }\n\n /**\n * Remove column and its constraints.\n */\n removeColumn(column: TableColumn): void {\n const foundColumn = this.columns.find((c) => c.name === column.name)\n if (foundColumn)\n this.columns.splice(this.columns.indexOf(foundColumn), 1)\n }\n\n /**\n * Adds unique constraint.\n */\n addUniqueConstraint(uniqueConstraint: TableUnique): void {\n this.uniques.push(uniqueConstraint)\n if (uniqueConstraint.columnNames.length === 1) {\n const uniqueColumn = this.columns.find(\n (column) => column.name === uniqueConstraint.columnNames[0],\n )\n if (uniqueColumn) uniqueColumn.isUnique = true\n }\n }\n\n /**\n * Removes unique constraint.\n */\n removeUniqueConstraint(removedUnique: TableUnique): void {\n const foundUnique = this.uniques.find(\n (unique) => unique.name === removedUnique.name,\n )\n if (foundUnique) {\n this.uniques.splice(this.uniques.indexOf(foundUnique), 1)\n if (foundUnique.columnNames.length === 1) {\n const uniqueColumn = this.columns.find(\n (column) => column.name === foundUnique.columnNames[0],\n )\n if (uniqueColumn) uniqueColumn.isUnique = false\n }\n }\n }\n\n /**\n * Adds check constraint.\n */\n addCheckConstraint(checkConstraint: TableCheck): void {\n this.checks.push(checkConstraint)\n }\n\n /**\n * Removes check constraint.\n */\n removeCheckConstraint(removedCheck: TableCheck): void {\n const foundCheck = this.checks.find(\n (check) => check.name === removedCheck.name,\n )\n if (foundCheck) {\n this.checks.splice(this.checks.indexOf(foundCheck), 1)\n }\n }\n\n /**\n * Adds exclusion constraint.\n */\n addExclusionConstraint(exclusionConstraint: TableExclusion): void {\n this.exclusions.push(exclusionConstraint)\n }\n\n /**\n * Removes exclusion constraint.\n */\n removeExclusionConstraint(removedExclusion: TableExclusion): void {\n const foundExclusion = this.exclusions.find(\n (exclusion) => exclusion.name === removedExclusion.name,\n )\n if (foundExclusion) {\n this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1)\n }\n }\n\n /**\n * Adds foreign keys.\n */\n addForeignKey(foreignKey: TableForeignKey): void {\n this.foreignKeys.push(foreignKey)\n }\n\n /**\n * Removes foreign key.\n */\n removeForeignKey(removedForeignKey: TableForeignKey): void {\n const fk = this.foreignKeys.find(\n (foreignKey) => foreignKey.name === removedForeignKey.name,\n )\n if (fk) this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1)\n }\n\n /**\n * Adds index.\n */\n addIndex(index: TableIndex, isMysql: boolean = false): void {\n this.indices.push(index)\n\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we mark this column as unique\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n const column = this.columns.find(\n (c) => c.name === index.columnNames[0],\n )\n if (column) column.isUnique = true\n }\n }\n\n /**\n * Removes index.\n */\n removeIndex(tableIndex: TableIndex, isMysql: boolean = false): void {\n const index = this.indices.find(\n (index) => index.name === tableIndex.name,\n )\n if (index) {\n this.indices.splice(this.indices.indexOf(index), 1)\n\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we move `unique` attribute from its column\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n const column = this.columns.find(\n (c) => c.name === index.columnNames[0],\n )\n if (column)\n column.isUnique = this.indices.some(\n (ind) =>\n ind.columnNames.length === 1 &&\n ind.columnNames[0] === column.name &&\n !!index.isUnique,\n )\n }\n }\n }\n\n findColumnByName(name: string): TableColumn | undefined {\n return this.columns.find((column) => column.name === name)\n }\n\n /**\n * Returns all column indices.\n */\n findColumnIndices(column: TableColumn): TableIndex[] {\n return this.indices.filter((index) => {\n return !!index.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column foreign keys.\n */\n findColumnForeignKeys(column: TableColumn): TableForeignKey[] {\n return this.foreignKeys.filter((foreignKey) => {\n return !!foreignKey.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column uniques.\n */\n findColumnUniques(column: TableColumn): TableUnique[] {\n return this.uniques.filter((unique) => {\n return !!unique.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column checks.\n */\n findColumnChecks(column: TableColumn): TableCheck[] {\n return this.checks.filter((check) => {\n return !!check.columnNames!.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates table from a given entity metadata.\n */\n static create(entityMetadata: EntityMetadata, driver: Driver): Table {\n const database =\n entityMetadata.database === driver.database\n ? undefined\n : entityMetadata.database\n const schema =\n entityMetadata.schema === (driver.options as any).schema\n ? undefined\n : entityMetadata.schema\n\n const options: TableOptions = {\n database: entityMetadata.database,\n schema: entityMetadata.schema,\n name: driver.buildTableName(\n entityMetadata.tableName,\n schema,\n database,\n ),\n engine: entityMetadata.engine,\n columns: entityMetadata.columns\n .filter((column) => column)\n .map((column) =>\n TableUtils.createTableColumnOptions(column, driver),\n ),\n indices: entityMetadata.indices\n .filter((index) => index.synchronize === true)\n .map((index) => TableIndex.create(index)),\n uniques: entityMetadata.uniques.map((unique) =>\n TableUnique.create(unique),\n ),\n checks: entityMetadata.checks.map((check) =>\n TableCheck.create(check),\n ),\n exclusions: entityMetadata.exclusions.map((exclusion) =>\n TableExclusion.create(exclusion),\n ),\n }\n\n return new Table(options)\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/schema-builder/table/Table.ts"],"names":[],"mappings":"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","file":"Table.js","sourcesContent":["import { TableColumn } from \"./TableColumn\"\nimport { TableIndex } from \"./TableIndex\"\nimport { TableForeignKey } from \"./TableForeignKey\"\nimport { Driver } from \"../../driver/Driver\"\nimport { TableOptions } from \"../options/TableOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { TableUtils } from \"../util/TableUtils\"\nimport { TableUnique } from \"./TableUnique\"\nimport { TableCheck } from \"./TableCheck\"\nimport { TableExclusion } from \"./TableExclusion\"\n\n/**\n * Table in the database represented in this class.\n */\nexport class Table {\n readonly \"@instanceof\" = Symbol.for(\"Table\")\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database name that this table resides in if it applies.\n */\n database?: string\n\n /**\n * Schema name that this table resides in if it applies.\n */\n schema?: string\n\n /**\n * May contain database name, schema name and table name, unless they're the current database.\n *\n * E.g. myDB.mySchema.myTable\n */\n name: string\n\n /**\n * Table columns.\n */\n columns: TableColumn[] = []\n\n /**\n * Table indices.\n */\n indices: TableIndex[] = []\n\n /**\n * Table foreign keys.\n */\n foreignKeys: TableForeignKey[] = []\n\n /**\n * Table unique constraints.\n */\n uniques: TableUnique[] = []\n\n /**\n * Table check constraints.\n */\n checks: TableCheck[] = []\n\n /**\n * Table exclusion constraints.\n */\n exclusions: TableExclusion[] = []\n\n /**\n * Indicates if table was just created.\n * This is needed, for example to check if we need to skip primary keys creation\n * for new tables.\n */\n justCreated: boolean = false\n\n /**\n * Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement\n */\n withoutRowid?: boolean = false\n\n /**\n * Table engine.\n */\n engine?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options?: TableOptions) {\n if (options) {\n this.database = options.database\n this.schema = options.schema\n this.name = options.name\n\n if (options.columns)\n this.columns = options.columns.map(\n (column) => new TableColumn(column),\n )\n\n if (options.indices)\n this.indices = options.indices.map(\n (index) => new TableIndex(index),\n )\n\n if (options.foreignKeys)\n this.foreignKeys = options.foreignKeys.map(\n (foreignKey) =>\n new TableForeignKey({\n ...foreignKey,\n referencedDatabase:\n foreignKey?.referencedDatabase ||\n options.database,\n referencedSchema:\n foreignKey?.referencedSchema || options.schema,\n }),\n )\n\n if (options.uniques)\n this.uniques = options.uniques.map(\n (unique) => new TableUnique(unique),\n )\n\n if (options.checks)\n this.checks = options.checks.map(\n (check) => new TableCheck(check),\n )\n\n if (options.exclusions)\n this.exclusions = options.exclusions.map(\n (exclusion) => new TableExclusion(exclusion),\n )\n\n if (options.justCreated !== undefined)\n this.justCreated = options.justCreated\n\n if (options.withoutRowid) this.withoutRowid = options.withoutRowid\n\n this.engine = options.engine\n }\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n get primaryColumns(): TableColumn[] {\n return this.columns.filter((column) => column.isPrimary)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Clones this table to a new table with all properties cloned.\n */\n clone(): Table {\n return new Table({\n schema: this.schema,\n database: this.database,\n name: this.name,\n columns: this.columns.map((column) => column.clone()),\n indices: this.indices.map((constraint) => constraint.clone()),\n foreignKeys: this.foreignKeys.map((constraint) =>\n constraint.clone(),\n ),\n uniques: this.uniques.map((constraint) => constraint.clone()),\n checks: this.checks.map((constraint) => constraint.clone()),\n exclusions: this.exclusions.map((constraint) => constraint.clone()),\n justCreated: this.justCreated,\n withoutRowid: this.withoutRowid,\n engine: this.engine,\n })\n }\n\n /**\n * Add column and creates its constraints.\n */\n addColumn(column: TableColumn): void {\n this.columns.push(column)\n }\n\n /**\n * Remove column and its constraints.\n */\n removeColumn(column: TableColumn): void {\n const foundColumn = this.columns.find((c) => c.name === column.name)\n if (foundColumn)\n this.columns.splice(this.columns.indexOf(foundColumn), 1)\n }\n\n /**\n * Adds unique constraint.\n */\n addUniqueConstraint(uniqueConstraint: TableUnique): void {\n this.uniques.push(uniqueConstraint)\n if (uniqueConstraint.columnNames.length === 1) {\n const uniqueColumn = this.columns.find(\n (column) => column.name === uniqueConstraint.columnNames[0],\n )\n if (uniqueColumn) uniqueColumn.isUnique = true\n }\n }\n\n /**\n * Removes unique constraint.\n */\n removeUniqueConstraint(removedUnique: TableUnique): void {\n const foundUnique = this.uniques.find(\n (unique) => unique.name === removedUnique.name,\n )\n if (foundUnique) {\n this.uniques.splice(this.uniques.indexOf(foundUnique), 1)\n if (foundUnique.columnNames.length === 1) {\n const uniqueColumn = this.columns.find(\n (column) => column.name === foundUnique.columnNames[0],\n )\n if (uniqueColumn) uniqueColumn.isUnique = false\n }\n }\n }\n\n /**\n * Adds check constraint.\n */\n addCheckConstraint(checkConstraint: TableCheck): void {\n this.checks.push(checkConstraint)\n }\n\n /**\n * Removes check constraint.\n */\n removeCheckConstraint(removedCheck: TableCheck): void {\n const foundCheck = this.checks.find(\n (check) => check.name === removedCheck.name,\n )\n if (foundCheck) {\n this.checks.splice(this.checks.indexOf(foundCheck), 1)\n }\n }\n\n /**\n * Adds exclusion constraint.\n */\n addExclusionConstraint(exclusionConstraint: TableExclusion): void {\n this.exclusions.push(exclusionConstraint)\n }\n\n /**\n * Removes exclusion constraint.\n */\n removeExclusionConstraint(removedExclusion: TableExclusion): void {\n const foundExclusion = this.exclusions.find(\n (exclusion) => exclusion.name === removedExclusion.name,\n )\n if (foundExclusion) {\n this.exclusions.splice(this.exclusions.indexOf(foundExclusion), 1)\n }\n }\n\n /**\n * Adds foreign keys.\n */\n addForeignKey(foreignKey: TableForeignKey): void {\n this.foreignKeys.push(foreignKey)\n }\n\n /**\n * Removes foreign key.\n */\n removeForeignKey(removedForeignKey: TableForeignKey): void {\n const fk = this.foreignKeys.find(\n (foreignKey) => foreignKey.name === removedForeignKey.name,\n )\n if (fk) this.foreignKeys.splice(this.foreignKeys.indexOf(fk), 1)\n }\n\n /**\n * Adds index.\n */\n addIndex(index: TableIndex, isMysql: boolean = false): void {\n this.indices.push(index)\n\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we mark this column as unique\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n const column = this.columns.find(\n (c) => c.name === index.columnNames[0],\n )\n if (column) column.isUnique = true\n }\n }\n\n /**\n * Removes index.\n */\n removeIndex(tableIndex: TableIndex, isMysql: boolean = false): void {\n const index = this.indices.find(\n (index) => index.name === tableIndex.name,\n )\n if (index) {\n this.indices.splice(this.indices.indexOf(index), 1)\n\n // in Mysql unique indices and unique constraints are the same thing\n // if index is unique and have only one column, we move `unique` attribute from its column\n if (index.columnNames.length === 1 && index.isUnique && isMysql) {\n const column = this.columns.find(\n (c) => c.name === index.columnNames[0],\n )\n if (column)\n column.isUnique = this.indices.some(\n (ind) =>\n ind.columnNames.length === 1 &&\n ind.columnNames[0] === column.name &&\n !!index.isUnique,\n )\n }\n }\n }\n\n findColumnByName(name: string): TableColumn | undefined {\n return this.columns.find((column) => column.name === name)\n }\n\n /**\n * Returns all column indices.\n */\n findColumnIndices(column: TableColumn): TableIndex[] {\n return this.indices.filter((index) => {\n return !!index.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column foreign keys.\n */\n findColumnForeignKeys(column: TableColumn): TableForeignKey[] {\n return this.foreignKeys.filter((foreignKey) => {\n return !!foreignKey.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column uniques.\n */\n findColumnUniques(column: TableColumn): TableUnique[] {\n return this.uniques.filter((unique) => {\n return !!unique.columnNames.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n /**\n * Returns all column checks.\n */\n findColumnChecks(column: TableColumn): TableCheck[] {\n return this.checks.filter((check) => {\n return !!check.columnNames!.find(\n (columnName) => columnName === column.name,\n )\n })\n }\n\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates table from a given entity metadata.\n */\n static create(entityMetadata: EntityMetadata, driver: Driver): Table {\n const database =\n entityMetadata.database === driver.database\n ? undefined\n : entityMetadata.database\n const schema =\n entityMetadata.schema === (driver.options as any).schema\n ? undefined\n : entityMetadata.schema\n\n const options: TableOptions = {\n database: entityMetadata.database,\n schema: entityMetadata.schema,\n name: driver.buildTableName(\n entityMetadata.tableName,\n schema,\n database,\n ),\n withoutRowid: entityMetadata.withoutRowid,\n engine: entityMetadata.engine,\n columns: entityMetadata.columns\n .filter((column) => column)\n .map((column) =>\n TableUtils.createTableColumnOptions(column, driver),\n ),\n indices: entityMetadata.indices\n .filter((index) => index.synchronize === true)\n .map((index) => TableIndex.create(index)),\n uniques: entityMetadata.uniques.map((unique) =>\n TableUnique.create(unique),\n ),\n checks: entityMetadata.checks.map((check) =>\n TableCheck.create(check),\n ),\n exclusions: entityMetadata.exclusions.map((exclusion) =>\n TableExclusion.create(exclusion),\n ),\n }\n\n return new Table(options)\n }\n}\n"],"sourceRoot":"../.."}
@@ -48,7 +48,7 @@ export declare class DateUtils {
48
48
  static simpleEnumToString(value: any): string;
49
49
  static stringToSimpleEnum(value: any, columnMetadata: ColumnMetadata): any;
50
50
  /**
51
- * Formats given number to "0x" format, e.g. if it is 1 then it will return "01".
51
+ * Formats given number to "0x" format, e.g. if the totalLength = 2 and the value is 1 then it will return "01".
52
52
  */
53
53
  private static formatZerolessValue;
54
54
  /**
package/util/DateUtils.js CHANGED
@@ -24,7 +24,7 @@ class DateUtils {
24
24
  */
25
25
  static mixedDateToDateString(value) {
26
26
  if (value instanceof Date)
27
- return (this.formatZerolessValue(value.getFullYear()) +
27
+ return (this.formatZerolessValue(value.getFullYear(), 4) +
28
28
  "-" +
29
29
  this.formatZerolessValue(value.getMonth() + 1) +
30
30
  "-" +
@@ -113,7 +113,7 @@ class DateUtils {
113
113
  value = new Date(value);
114
114
  }
115
115
  if (value instanceof Date) {
116
- let finalValue = this.formatZerolessValue(value.getFullYear()) +
116
+ let finalValue = this.formatZerolessValue(value.getFullYear(), 4) +
117
117
  "-" +
118
118
  this.formatZerolessValue(value.getMonth() + 1) +
119
119
  "-" +
@@ -138,7 +138,7 @@ class DateUtils {
138
138
  value = new Date(value);
139
139
  }
140
140
  if (value instanceof Date) {
141
- return (this.formatZerolessValue(value.getUTCFullYear()) +
141
+ return (this.formatZerolessValue(value.getUTCFullYear(), 4) +
142
142
  "-" +
143
143
  this.formatZerolessValue(value.getUTCMonth() + 1) +
144
144
  "-" +
@@ -199,12 +199,11 @@ class DateUtils {
199
199
  // Private Static Methods
200
200
  // -------------------------------------------------------------------------
201
201
  /**
202
- * Formats given number to "0x" format, e.g. if it is 1 then it will return "01".
202
+ * Formats given number to "0x" format, e.g. if the totalLength = 2 and the value is 1 then it will return "01".
203
203
  */
204
- static formatZerolessValue(value) {
205
- if (value < 10)
206
- return "0" + value;
207
- return String(value);
204
+ static formatZerolessValue(value, totalLength = 2) {
205
+ const pad = "0".repeat(totalLength);
206
+ return String(`${pad}${value}`).slice(-totalLength);
208
207
  }
209
208
  /**
210
209
  * Formats given number to "0x" format, e.g. if it is 1 then it will return "01".
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/DateUtils.ts"],"names":[],"mappings":"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","file":"DateUtils.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { parseISO } from \"date-fns\"\n\n/**\n * Provides utilities to transform hydrated and persisted data.\n */\nexport class DateUtils {\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Normalizes date object hydrated from the database.\n */\n static normalizeHydratedDate(\n mixedDate: Date | string | undefined,\n ): Date | string | undefined {\n if (!mixedDate) return mixedDate\n\n return typeof mixedDate === \"string\"\n ? new Date(mixedDate)\n : (mixedDate as Date)\n }\n\n /**\n * Converts given value into date string in a \"YYYY-MM-DD\" format.\n */\n static mixedDateToDateString(value: string | Date): string {\n if (value instanceof Date)\n return (\n this.formatZerolessValue(value.getFullYear()) +\n \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getDate())\n )\n\n return value\n }\n\n /**\n * Converts given value into date object.\n */\n static mixedDateToDate(\n mixedDate: Date | string,\n toUtc: boolean = false,\n useMilliseconds = true,\n ): Date {\n /**\n * new Date(ISOString) is not a reliable parser to date strings.\n * It's better to use 'date-fns' parser to parser string in ISO Format.\n *\n * The problem here is with wrong timezone.\n *\n * For example:\n *\n * ``new Date('2021-04-28')`` will generate `2021-04-28T00:00:00.000Z`\n * in my timezone, which is not true for my timezone (GMT-0300). It should\n * be `2021-04-28T03:00:00.000Z` as `new Date(2021, 3, 28)` generates.\n *\n * https://stackoverflow.com/a/2587398\n */\n let date =\n typeof mixedDate === \"string\" ? parseISO(mixedDate) : mixedDate\n\n if (toUtc)\n date = new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n )\n\n if (!useMilliseconds) date.setUTCMilliseconds(0)\n\n return date\n }\n\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n static mixedDateToTimeString(\n value: Date | any,\n skipSeconds: boolean = false,\n ): string | any {\n if (value instanceof Date)\n return (\n this.formatZerolessValue(value.getHours()) +\n \":\" +\n this.formatZerolessValue(value.getMinutes()) +\n (!skipSeconds\n ? \":\" + this.formatZerolessValue(value.getSeconds())\n : \"\")\n )\n\n return value\n }\n\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n static mixedTimeToDate(value: Date | any): string | any {\n if (typeof value === \"string\") {\n const [hours, minutes, seconds] = value.split(\":\")\n const date = new Date()\n if (hours) date.setHours(parseInt(hours))\n if (minutes) date.setMinutes(parseInt(minutes))\n if (seconds) date.setSeconds(parseInt(seconds))\n return date\n }\n\n return value\n }\n\n /**\n * Converts given string value with \"-\" separator into a \"HH:mm:ss\" format.\n */\n static mixedTimeToString(\n value: string | any,\n skipSeconds: boolean = false,\n ): string | any {\n value =\n value instanceof Date\n ? value.getHours() +\n \":\" +\n value.getMinutes() +\n (!skipSeconds ? \":\" + value.getSeconds() : \"\")\n : value\n if (typeof value === \"string\") {\n return value\n .split(\":\")\n .map((v) => (v.length === 1 ? \"0\" + v : v)) // append zero at beginning if we have a first-zero-less number\n .join(\":\")\n }\n\n return value\n }\n\n /**\n * Converts given value into datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n */\n static mixedDateToDatetimeString(\n value: Date | any,\n useMilliseconds?: boolean,\n ): string | any {\n if (typeof value === \"string\") {\n value = new Date(value)\n }\n if (value instanceof Date) {\n let finalValue =\n this.formatZerolessValue(value.getFullYear()) +\n \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getDate()) +\n \" \" +\n this.formatZerolessValue(value.getHours()) +\n \":\" +\n this.formatZerolessValue(value.getMinutes()) +\n \":\" +\n this.formatZerolessValue(value.getSeconds())\n\n if (useMilliseconds)\n finalValue += `.${this.formatMilliseconds(\n value.getMilliseconds(),\n )}`\n\n value = finalValue\n }\n\n return value\n }\n\n /**\n * Converts given value into utc datetime string in a \"YYYY-MM-DD HH-mm-ss.sss\" format.\n */\n static mixedDateToUtcDatetimeString(value: Date | any): string | any {\n if (typeof value === \"string\") {\n value = new Date(value)\n }\n if (value instanceof Date) {\n return (\n this.formatZerolessValue(value.getUTCFullYear()) +\n \"-\" +\n this.formatZerolessValue(value.getUTCMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getUTCDate()) +\n \" \" +\n this.formatZerolessValue(value.getUTCHours()) +\n \":\" +\n this.formatZerolessValue(value.getUTCMinutes()) +\n \":\" +\n this.formatZerolessValue(value.getUTCSeconds()) +\n \".\" +\n this.formatMilliseconds(value.getUTCMilliseconds())\n )\n }\n\n return value\n }\n\n /**\n * Converts each item in the given array to string joined by \",\" separator.\n */\n static simpleArrayToString(value: any[] | any): string[] | any {\n if (Array.isArray(value)) {\n return (value as any[]).map((i) => String(i)).join(\",\")\n }\n\n return value\n }\n\n /**\n * Converts given string to simple array split by \",\" separator.\n */\n static stringToSimpleArray(value: string | any): string | any {\n if (typeof value === \"string\") {\n if (value.length > 0) {\n return value.split(\",\")\n } else {\n return []\n }\n }\n\n return value\n }\n\n static simpleJsonToString(value: any): string {\n return JSON.stringify(value)\n }\n\n static stringToSimpleJson(value: any) {\n return typeof value === \"string\" ? JSON.parse(value) : value\n }\n\n static simpleEnumToString(value: any) {\n return \"\" + value\n }\n\n static stringToSimpleEnum(value: any, columnMetadata: ColumnMetadata) {\n if (\n columnMetadata.enum &&\n !isNaN(value) &&\n columnMetadata.enum.indexOf(parseInt(value)) >= 0\n ) {\n // convert to number if that exists in poosible enum options\n value = parseInt(value)\n }\n\n return value\n }\n\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n private static formatZerolessValue(value: number): string {\n if (value < 10) return \"0\" + value\n\n return String(value)\n }\n\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n private static formatMilliseconds(value: number): string {\n if (value < 10) {\n return \"00\" + value\n } else if (value < 100) {\n return \"0\" + value\n } else {\n return String(value)\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/util/DateUtils.ts"],"names":[],"mappings":"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","file":"DateUtils.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { parseISO } from \"date-fns\"\n\n/**\n * Provides utilities to transform hydrated and persisted data.\n */\nexport class DateUtils {\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Normalizes date object hydrated from the database.\n */\n static normalizeHydratedDate(\n mixedDate: Date | string | undefined,\n ): Date | string | undefined {\n if (!mixedDate) return mixedDate\n\n return typeof mixedDate === \"string\"\n ? new Date(mixedDate)\n : (mixedDate as Date)\n }\n\n /**\n * Converts given value into date string in a \"YYYY-MM-DD\" format.\n */\n static mixedDateToDateString(value: string | Date): string {\n if (value instanceof Date)\n return (\n this.formatZerolessValue(value.getFullYear(), 4) +\n \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getDate())\n )\n\n return value\n }\n\n /**\n * Converts given value into date object.\n */\n static mixedDateToDate(\n mixedDate: Date | string,\n toUtc: boolean = false,\n useMilliseconds = true,\n ): Date {\n /**\n * new Date(ISOString) is not a reliable parser to date strings.\n * It's better to use 'date-fns' parser to parser string in ISO Format.\n *\n * The problem here is with wrong timezone.\n *\n * For example:\n *\n * ``new Date('2021-04-28')`` will generate `2021-04-28T00:00:00.000Z`\n * in my timezone, which is not true for my timezone (GMT-0300). It should\n * be `2021-04-28T03:00:00.000Z` as `new Date(2021, 3, 28)` generates.\n *\n * https://stackoverflow.com/a/2587398\n */\n let date =\n typeof mixedDate === \"string\" ? parseISO(mixedDate) : mixedDate\n\n if (toUtc)\n date = new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n )\n\n if (!useMilliseconds) date.setUTCMilliseconds(0)\n\n return date\n }\n\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n static mixedDateToTimeString(\n value: Date | any,\n skipSeconds: boolean = false,\n ): string | any {\n if (value instanceof Date)\n return (\n this.formatZerolessValue(value.getHours()) +\n \":\" +\n this.formatZerolessValue(value.getMinutes()) +\n (!skipSeconds\n ? \":\" + this.formatZerolessValue(value.getSeconds())\n : \"\")\n )\n\n return value\n }\n\n /**\n * Converts given value into time string in a \"HH:mm:ss\" format.\n */\n static mixedTimeToDate(value: Date | any): string | any {\n if (typeof value === \"string\") {\n const [hours, minutes, seconds] = value.split(\":\")\n const date = new Date()\n if (hours) date.setHours(parseInt(hours))\n if (minutes) date.setMinutes(parseInt(minutes))\n if (seconds) date.setSeconds(parseInt(seconds))\n return date\n }\n\n return value\n }\n\n /**\n * Converts given string value with \"-\" separator into a \"HH:mm:ss\" format.\n */\n static mixedTimeToString(\n value: string | any,\n skipSeconds: boolean = false,\n ): string | any {\n value =\n value instanceof Date\n ? value.getHours() +\n \":\" +\n value.getMinutes() +\n (!skipSeconds ? \":\" + value.getSeconds() : \"\")\n : value\n if (typeof value === \"string\") {\n return value\n .split(\":\")\n .map((v) => (v.length === 1 ? \"0\" + v : v)) // append zero at beginning if we have a first-zero-less number\n .join(\":\")\n }\n\n return value\n }\n\n /**\n * Converts given value into datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n */\n static mixedDateToDatetimeString(\n value: Date | any,\n useMilliseconds?: boolean,\n ): string | any {\n if (typeof value === \"string\") {\n value = new Date(value)\n }\n if (value instanceof Date) {\n let finalValue =\n this.formatZerolessValue(value.getFullYear(), 4) +\n \"-\" +\n this.formatZerolessValue(value.getMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getDate()) +\n \" \" +\n this.formatZerolessValue(value.getHours()) +\n \":\" +\n this.formatZerolessValue(value.getMinutes()) +\n \":\" +\n this.formatZerolessValue(value.getSeconds())\n\n if (useMilliseconds)\n finalValue += `.${this.formatMilliseconds(\n value.getMilliseconds(),\n )}`\n\n value = finalValue\n }\n\n return value\n }\n\n /**\n * Converts given value into utc datetime string in a \"YYYY-MM-DD HH-mm-ss.sss\" format.\n */\n static mixedDateToUtcDatetimeString(value: Date | any): string | any {\n if (typeof value === \"string\") {\n value = new Date(value)\n }\n if (value instanceof Date) {\n return (\n this.formatZerolessValue(value.getUTCFullYear(), 4) +\n \"-\" +\n this.formatZerolessValue(value.getUTCMonth() + 1) +\n \"-\" +\n this.formatZerolessValue(value.getUTCDate()) +\n \" \" +\n this.formatZerolessValue(value.getUTCHours()) +\n \":\" +\n this.formatZerolessValue(value.getUTCMinutes()) +\n \":\" +\n this.formatZerolessValue(value.getUTCSeconds()) +\n \".\" +\n this.formatMilliseconds(value.getUTCMilliseconds())\n )\n }\n\n return value\n }\n\n /**\n * Converts each item in the given array to string joined by \",\" separator.\n */\n static simpleArrayToString(value: any[] | any): string[] | any {\n if (Array.isArray(value)) {\n return (value as any[]).map((i) => String(i)).join(\",\")\n }\n\n return value\n }\n\n /**\n * Converts given string to simple array split by \",\" separator.\n */\n static stringToSimpleArray(value: string | any): string | any {\n if (typeof value === \"string\") {\n if (value.length > 0) {\n return value.split(\",\")\n } else {\n return []\n }\n }\n\n return value\n }\n\n static simpleJsonToString(value: any): string {\n return JSON.stringify(value)\n }\n\n static stringToSimpleJson(value: any) {\n return typeof value === \"string\" ? JSON.parse(value) : value\n }\n\n static simpleEnumToString(value: any) {\n return \"\" + value\n }\n\n static stringToSimpleEnum(value: any, columnMetadata: ColumnMetadata) {\n if (\n columnMetadata.enum &&\n !isNaN(value) &&\n columnMetadata.enum.indexOf(parseInt(value)) >= 0\n ) {\n // convert to number if that exists in poosible enum options\n value = parseInt(value)\n }\n\n return value\n }\n\n // -------------------------------------------------------------------------\n // Private Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Formats given number to \"0x\" format, e.g. if the totalLength = 2 and the value is 1 then it will return \"01\".\n */\n private static formatZerolessValue(value: number, totalLength = 2): string {\n const pad = \"0\".repeat(totalLength)\n\n return String(`${pad}${value}`).slice(-totalLength)\n }\n\n /**\n * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n */\n private static formatMilliseconds(value: number): string {\n if (value < 10) {\n return \"00\" + value\n } else if (value < 100) {\n return \"0\" + value\n } else {\n return String(value)\n }\n }\n}\n"],"sourceRoot":".."}