typeorm 0.3.22-dev.4e31a86 → 0.3.22-dev.5922519
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.
- package/browser/connection/ConnectionOptionsReader.js +5 -9
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/driver/DriverFactory.js +2 -2
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +3 -5
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +2 -12
- package/browser/driver/expo/ExpoDriver.js +8 -54
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoDriverFactory.d.ts +9 -0
- package/browser/driver/expo/ExpoDriverFactory.js +18 -0
- package/browser/driver/expo/ExpoDriverFactory.js.map +1 -0
- package/browser/driver/expo/ExpoQueryRunner.d.ts +0 -48
- package/browser/driver/expo/ExpoQueryRunner.js +36 -141
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/expo/legacy/ExpoLegacyDriver.d.ts +21 -0
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js +71 -0
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js.map +1 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +57 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +165 -0
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -0
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +111 -142
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +2 -3
- package/browser/driver/mongodb/MongoDriver.js +57 -65
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +3 -5
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +11 -2
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +43 -35
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +4 -1
- package/browser/driver/sap/SapQueryRunner.js +6 -16
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/index.d.ts +1 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +2 -2
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +2 -1
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/subscriber/event/QueryEvent.d.ts +1 -1
- package/browser/subscriber/event/QueryEvent.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +2 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +5 -9
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/driver/DriverFactory.js +2 -2
- package/driver/DriverFactory.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +3 -5
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +2 -12
- package/driver/expo/ExpoDriver.js +8 -54
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoDriverFactory.d.ts +9 -0
- package/driver/expo/ExpoDriverFactory.js +22 -0
- package/driver/expo/ExpoDriverFactory.js.map +1 -0
- package/driver/expo/ExpoQueryRunner.d.ts +0 -48
- package/driver/expo/ExpoQueryRunner.js +36 -141
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/expo/legacy/ExpoLegacyDriver.d.ts +21 -0
- package/driver/expo/legacy/ExpoLegacyDriver.js +75 -0
- package/driver/expo/legacy/ExpoLegacyDriver.js.map +1 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +57 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js +169 -0
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -0
- package/driver/mongodb/MongoConnectionOptions.d.ts +111 -142
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +2 -3
- package/driver/mongodb/MongoDriver.js +57 -65
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +3 -5
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +11 -2
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.js +43 -35
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +4 -1
- package/driver/sap/SapQueryRunner.js +6 -16
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/migration/MigrationExecutor.js +2 -2
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/InsertQueryBuilder.js +2 -1
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/subscriber/event/QueryEvent.d.ts +1 -1
- package/subscriber/event/QueryEvent.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import { v4 as uuidv4 } from \"uuid\"\nimport { EntityTarget } from \"../common/EntityTarget\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { AuroraMysqlDriver } from \"../driver/aurora-mysql/AuroraMysqlDriver\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\"\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\"\nimport { TypeORMError } from \"../error\"\nimport { InsertValuesMissingError } from \"../error/InsertValuesMissingError\"\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { InsertOrUpdateOptions } from \"./InsertOrUpdateOptions\"\nimport { QueryBuilder } from \"./QueryBuilder\"\nimport { QueryDeepPartialEntity } from \"./QueryPartialEntity\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\"\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class InsertQueryBuilder<\n Entity extends ObjectLiteral,\n> extends QueryBuilder<Entity> {\n readonly \"@instanceof\" = Symbol.for(\"InsertQueryBuilder\")\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.createInsertExpression()\n return this.replacePropertyNamesForTheWholeQuery(sql.trim())\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<InsertResult> {\n // console.time(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets()\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0) return new InsertResult()\n\n // console.time(\"QueryBuilder.execute\");\n // console.time(\".database stuff\");\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 // console.timeEnd(\".database stuff\");\n\n // call before insertion methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n const broadcastResult = new BroadcasterResult()\n valueSets.forEach((valueSet) => {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(\n broadcastResult,\n this.expressionMap.mainAlias!.metadata,\n valueSet,\n )\n })\n await broadcastResult.wait()\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 // console.time(\".prepare 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 ) {\n if (\n !(\n valueSets.length > 1 &&\n this.connection.driver.options.type === \"oracle\"\n )\n ) {\n this.expressionMap.extraReturningColumns =\n this.expressionMap.mainAlias!.metadata.getInsertionReturningColumns()\n }\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 // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters()\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql]\n const sql = statements.filter((s) => s != null).join(\";\\n\\n\")\n\n const queryResult = await queryRunner.query(sql, parameters, true)\n\n const insertResult = InsertResult.from(queryResult)\n\n // console.timeEnd(\".query execution by database\");\n\n // load returning results and set them to the entity if entity updation is enabled\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n // console.time(\".updating entity\");\n await returningResultsEntityUpdator.insert(\n insertResult,\n valueSets,\n )\n // console.timeEnd(\".updating entity\");\n }\n\n // call after insertion methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n const broadcastResult = new BroadcasterResult()\n valueSets.forEach((valueSet) => {\n queryRunner.broadcaster.broadcastAfterInsertEvent(\n broadcastResult,\n this.expressionMap.mainAlias!.metadata,\n valueSet,\n )\n })\n await broadcastResult.wait()\n }\n\n // close transaction if we started it\n // console.time(\".commit\");\n if (transactionStartedByUs) {\n await queryRunner.commitTransaction()\n }\n // console.timeEnd(\".commit\");\n\n return insertResult\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 // console.time(\".releasing connection\");\n if (queryRunner !== this.queryRunner) {\n // means we created our own query runner\n await queryRunner.release()\n }\n // console.timeEnd(\".releasing connection\");\n // console.timeEnd(\"QueryBuilder.execute\");\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n into<T extends ObjectLiteral>(\n entityTarget: EntityTarget<T>,\n columns?: string[],\n ): InsertQueryBuilder<T> {\n entityTarget = InstanceChecker.isEntitySchema(entityTarget)\n ? entityTarget.options.name\n : entityTarget\n const mainAlias = this.createFromAlias(entityTarget)\n this.expressionMap.setMainAlias(mainAlias)\n this.expressionMap.insertColumns = columns || []\n return this as any as InsertQueryBuilder<T>\n }\n\n /**\n * Values needs to be inserted into table.\n */\n values(\n values:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n ): this {\n this.expressionMap.valuesSet = values\n return this\n }\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(\"insert\")) {\n throw new ReturningStatementNotSupportedError()\n }\n\n this.expressionMap.returning = returning\n return this\n }\n\n /**\n * Indicates if entity must be updated after insertion operations.\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 * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\n */\n onConflict(statement: string): this {\n this.expressionMap.onConflict = statement\n return this\n }\n\n /**\n * Adds additional ignore statement supported in databases.\n */\n orIgnore(statement: string | boolean = true): this {\n this.expressionMap.onIgnore = !!statement\n return this\n }\n\n /**\n * @deprecated\n *\n * `.orUpdate({ columns: [ \"is_updated\" ] }).setParameter(\"is_updated\", value)`\n *\n * is now `.orUpdate([\"is_updated\"])`\n *\n * `.orUpdate({ conflict_target: ['date'], overwrite: ['title'] })`\n *\n * is now `.orUpdate(['title'], ['date'])`\n *\n */\n orUpdate(statement?: {\n columns?: string[]\n overwrite?: string[]\n conflict_target?: string | string[]\n }): this\n\n orUpdate(\n overwrite: string[],\n conflictTarget?: string | string[],\n orUpdateOptions?: InsertOrUpdateOptions,\n ): this\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(\n statementOrOverwrite?:\n | {\n columns?: string[]\n overwrite?: string[]\n conflict_target?: string | string[]\n }\n | string[],\n conflictTarget?: string | string[],\n orUpdateOptions?: InsertOrUpdateOptions,\n ): this {\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n skipUpdateIfNoValuesChanged:\n orUpdateOptions?.skipUpdateIfNoValuesChanged,\n upsertType: orUpdateOptions?.upsertType,\n }\n return this\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n skipUpdateIfNoValuesChanged:\n orUpdateOptions?.skipUpdateIfNoValuesChanged,\n indexPredicate: orUpdateOptions?.indexPredicate,\n upsertType: orUpdateOptions?.upsertType,\n }\n return this\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates INSERT express used to perform insert query.\n */\n protected createInsertExpression() {\n const tableName = this.getTableName(this.getMainTableName())\n const valuesExpression = this.createValuesExpression() // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n const returningExpression =\n this.connection.driver.options.type === \"oracle\" &&\n this.getValueSets().length > 1\n ? null\n : this.createReturningExpression(\"insert\") // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression()\n let query = \"INSERT \"\n\n if (this.expressionMap.onUpdate?.upsertType === \"primary-key\") {\n query = \"UPSERT \"\n }\n\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n query += `${this.expressionMap.onIgnore ? \" IGNORE \" : \"\"}`\n }\n\n query += `INTO ${tableName}`\n\n if (\n this.alias !== this.getMainTableName() &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n query += ` AS \"${this.alias}\"`\n }\n\n // add columns expression\n if (columnsExpression) {\n query += `(${columnsExpression})`\n } else {\n if (\n !valuesExpression &&\n (DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\")\n )\n // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\"\n }\n\n // add OUTPUT expression\n if (\n returningExpression &&\n this.connection.driver.options.type === \"mssql\"\n ) {\n query += ` OUTPUT ${returningExpression}`\n }\n\n // add VALUES expression\n if (valuesExpression) {\n if (\n (this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"sap\") &&\n this.getValueSets().length > 1\n ) {\n query += ` ${valuesExpression}`\n } else {\n query += ` VALUES ${valuesExpression}`\n }\n } else {\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\"\n } else {\n query += ` DEFAULT VALUES`\n }\n }\n if (this.expressionMap.onUpdate?.upsertType !== \"primary-key\") {\n if (\n this.connection.driver.supportedUpsertTypes.includes(\n \"on-conflict-do-update\",\n )\n ) {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \"\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `\n } else if (this.expressionMap.onUpdate) {\n const {\n overwrite,\n columns,\n conflict,\n skipUpdateIfNoValuesChanged,\n indexPredicate,\n } = this.expressionMap.onUpdate\n\n let conflictTarget = \"ON CONFLICT\"\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict\n .map((column) => this.escape(column))\n .join(\", \")} )`\n if (\n indexPredicate &&\n !DriverUtils.isPostgresFamily(\n this.connection.driver,\n )\n ) {\n throw new TypeORMError(\n `indexPredicate option is not supported by the current database driver`,\n )\n }\n if (\n indexPredicate &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n conflictTarget += ` WHERE ( ${indexPredicate} )`\n }\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(\n conflict,\n )}`\n }\n\n const updatePart: string[] = []\n\n if (Array.isArray(overwrite)) {\n updatePart.push(\n ...overwrite.map(\n (column) =>\n `${this.escape(\n column,\n )} = EXCLUDED.${this.escape(column)}`,\n ),\n )\n } else if (columns) {\n updatePart.push(\n ...columns.map(\n (column) =>\n `${this.escape(column)} = :${column}`,\n ),\n )\n }\n\n if (updatePart.length > 0) {\n query += ` ${conflictTarget} DO UPDATE SET `\n\n updatePart.push(\n ...this.expressionMap\n .mainAlias!.metadata.columns.filter(\n (column) =>\n column.isUpdateDate &&\n !overwrite?.includes(\n column.databaseName,\n ) &&\n !(\n (this.connection.driver.options\n .type === \"oracle\" &&\n this.getValueSets().length >\n 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options\n .type === \"sap\" ||\n this.connection.driver.options\n .type === \"spanner\"\n ),\n )\n .map(\n (column) =>\n `${this.escape(\n column.databaseName,\n )} = DEFAULT`,\n ),\n )\n\n query += updatePart.join(\", \")\n query += \" \"\n }\n\n if (\n Array.isArray(overwrite) &&\n skipUpdateIfNoValuesChanged &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n query += ` WHERE (`\n query += overwrite\n .map(\n (column) =>\n `${tableName}.${this.escape(\n column,\n )} IS DISTINCT FROM EXCLUDED.${this.escape(\n column,\n )}`,\n )\n .join(\" OR \")\n query += \") \"\n }\n }\n } else if (\n this.connection.driver.supportedUpsertTypes.includes(\n \"on-duplicate-key-update\",\n )\n ) {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \"\n query += overwrite\n .map(\n (column) =>\n `${this.escape(\n column,\n )} = VALUES(${this.escape(column)})`,\n )\n .join(\", \")\n query += \" \"\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \"\n query += columns\n .map(\n (column) =>\n `${this.escape(column)} = :${column}`,\n )\n .join(\", \")\n query += \" \"\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(\n `onUpdate is not supported by the current database driver`,\n )\n }\n }\n }\n\n // add RETURNING expression\n if (\n returningExpression &&\n (DriverUtils.isPostgresFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"cockroachdb\" ||\n DriverUtils.isMySQLFamily(this.connection.driver))\n ) {\n query += ` RETURNING ${returningExpression}`\n }\n\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (\n this.connection.driver.options.type === \"mssql\" &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap\n .mainAlias!.metadata.columns.filter((column) =>\n this.expressionMap.insertColumns.length > 0\n ? this.expressionMap.insertColumns.indexOf(\n column.propertyPath,\n ) !== -1\n : column.isInsert,\n )\n .some((column) =>\n this.isOverridingAutoIncrementBehavior(column),\n )\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`\n }\n\n return query\n }\n\n /**\n * Gets list of columns where values must be inserted to.\n */\n protected getInsertedColumns(): ColumnMetadata[] {\n if (!this.expressionMap.mainAlias!.hasMetadata) return []\n\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n // if user specified list of columns he wants to insert to, then we filter only them\n if (this.expressionMap.insertColumns.length)\n return (\n this.expressionMap.insertColumns.indexOf(\n column.propertyPath,\n ) !== -1\n )\n\n // skip columns the user doesn't want included by default\n if (!column.isInsert) {\n return false\n }\n\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (\n column.isGenerated &&\n column.generationStrategy === \"increment\" &&\n !(this.connection.driver.options.type === \"spanner\") &&\n !(this.connection.driver.options.type === \"oracle\") &&\n !DriverUtils.isSQLiteFamily(this.connection.driver) &&\n !DriverUtils.isMySQLFamily(this.connection.driver) &&\n !(this.connection.driver.options.type === \"aurora-mysql\") &&\n !(\n this.connection.driver.options.type === \"mssql\" &&\n this.isOverridingAutoIncrementBehavior(column)\n )\n )\n return false\n\n return true\n },\n )\n }\n\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n protected createColumnNamesExpression(): string {\n const columns = this.getInsertedColumns()\n if (columns.length > 0)\n return columns\n .map((column) => this.escape(column.databaseName))\n .join(\", \")\n\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (\n !this.expressionMap.mainAlias!.hasMetadata &&\n !this.expressionMap.insertColumns.length\n ) {\n const valueSets = this.getValueSets()\n if (valueSets.length === 1)\n return Object.keys(valueSets[0])\n .map((columnName) => this.escape(columnName))\n .join(\", \")\n }\n\n // get a table name and all column database names\n return this.expressionMap.insertColumns\n .map((columnName) => this.escape(columnName))\n .join(\", \")\n }\n\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n protected createValuesExpression(): string {\n const valueSets = this.getValueSets()\n const columns = this.getInsertedColumns()\n\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n let expression = \"\"\n valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (\n this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" SELECT \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" SELECT \"\n } else {\n expression += \"(\"\n }\n }\n\n // extract real value from the entity\n let value = column.getEntityValue(valueSet)\n\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(typeof value === \"function\")) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n\n if (!(typeof value === \"function\")) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(\n value,\n column,\n )\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression += \"1\"\n\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n } else if (column.isDiscriminator) {\n expression += this.createParameter(\n this.expressionMap.mainAlias!.metadata\n .discriminatorValue,\n )\n // return \"1\";\n\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n } else if (\n column.isGenerated &&\n column.generationStrategy === \"uuid\" &&\n !this.connection.driver.isUUIDGenerationSupported() &&\n value === undefined\n ) {\n value = uuidv4()\n expression += this.createParameter(value)\n\n if (\n !(\n valueSetIndex in\n this.expressionMap.locallyGenerated\n )\n ) {\n this.expressionMap.locallyGenerated[valueSetIndex] =\n {}\n }\n column.setEntityValue(\n this.expressionMap.locallyGenerated[valueSetIndex],\n value,\n )\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (\n (this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (\n column.default !== undefined &&\n column.default !== null\n ) {\n // try to use default defined in the column\n expression +=\n this.connection.driver.normalizeDefault(\n column,\n )\n } else {\n expression += \"NULL\" // otherwise simply use NULL and pray if column is nullable\n }\n } else {\n expression += \"DEFAULT\"\n }\n } else if (\n value === null &&\n this.connection.driver.options.type === \"spanner\"\n ) {\n expression += \"NULL\"\n\n // support for SQL expressions in queries\n } else if (typeof value === \"function\") {\n expression += value()\n\n // just any other regular value\n } else {\n if (this.connection.driver.options.type === \"mssql\")\n value = (\n this.connection.driver as SqlServerDriver\n ).parametrizeValue(column, value)\n\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\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 DriverUtils.isPostgresFamily(\n this.connection.driver,\n ) &&\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 === \"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 }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (\n this.connection.driver.options.type ===\n \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM DUAL \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM dummy \"\n } else {\n expression += \")\"\n }\n } else {\n if (\n this.connection.driver.options.type ===\n \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM DUAL UNION ALL \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM dummy UNION ALL \"\n } else {\n expression += \"), \"\n }\n }\n } else {\n expression += \", \"\n }\n })\n })\n if (expression === \"()\") return \"\"\n\n return expression\n } else {\n // for tables without metadata\n // get values needs to be inserted\n let expression = \"\"\n\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet)\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\"\n }\n\n const value = valueSet[columnName]\n\n // support for SQL expressions in queries\n if (typeof value === \"function\") {\n expression += value()\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (\n (this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n expression += \"NULL\"\n } else {\n expression += \"DEFAULT\"\n }\n } else if (\n value === null &&\n this.connection.driver.options.type === \"spanner\"\n ) {\n // just any other regular value\n } else {\n expression += this.createParameter(value)\n }\n\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression += \")\"\n } else {\n expression += \"), \"\n }\n } else {\n expression += \", \"\n }\n })\n })\n if (expression === \"()\") return \"\"\n return expression\n }\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSets(): ObjectLiteral[] {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet\n\n if (ObjectUtils.isObject(this.expressionMap.valuesSet))\n return [this.expressionMap.valuesSet]\n\n throw new InsertValuesMissingError()\n }\n\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(\n column: ColumnMetadata,\n ): boolean {\n return (\n column.isPrimary &&\n column.isGenerated &&\n column.generationStrategy === \"increment\" &&\n this.getValueSets().some(\n (valueSet) =>\n column.getEntityValue(valueSet) !== undefined &&\n column.getEntityValue(valueSet) !== null,\n )\n )\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import { v4 as uuidv4 } from \"uuid\"\nimport { EntityTarget } from \"../common/EntityTarget\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { AuroraMysqlDriver } from \"../driver/aurora-mysql/AuroraMysqlDriver\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { MysqlDriver } from \"../driver/mysql/MysqlDriver\"\nimport { SqlServerDriver } from \"../driver/sqlserver/SqlServerDriver\"\nimport { TypeORMError } from \"../error\"\nimport { InsertValuesMissingError } from \"../error/InsertValuesMissingError\"\nimport { ReturningStatementNotSupportedError } from \"../error/ReturningStatementNotSupportedError\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { BroadcasterResult } from \"../subscriber/BroadcasterResult\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { InsertOrUpdateOptions } from \"./InsertOrUpdateOptions\"\nimport { QueryBuilder } from \"./QueryBuilder\"\nimport { QueryDeepPartialEntity } from \"./QueryPartialEntity\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { ReturningResultsEntityUpdator } from \"./ReturningResultsEntityUpdator\"\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class InsertQueryBuilder<\n Entity extends ObjectLiteral,\n> extends QueryBuilder<Entity> {\n readonly \"@instanceof\" = Symbol.for(\"InsertQueryBuilder\")\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.createInsertExpression()\n return this.replacePropertyNamesForTheWholeQuery(sql.trim())\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<InsertResult> {\n // console.time(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets()\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0) return new InsertResult()\n\n // console.time(\"QueryBuilder.execute\");\n // console.time(\".database stuff\");\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 // console.timeEnd(\".database stuff\");\n\n // call before insertion methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n const broadcastResult = new BroadcasterResult()\n valueSets.forEach((valueSet) => {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(\n broadcastResult,\n this.expressionMap.mainAlias!.metadata,\n valueSet,\n )\n })\n await broadcastResult.wait()\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 // console.time(\".prepare 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 ) {\n if (\n !(\n valueSets.length > 1 &&\n this.connection.driver.options.type === \"oracle\"\n )\n ) {\n this.expressionMap.extraReturningColumns =\n this.expressionMap.mainAlias!.metadata.getInsertionReturningColumns()\n }\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 // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters()\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql]\n const sql = statements.filter((s) => s != null).join(\";\\n\\n\")\n\n const queryResult = await queryRunner.query(sql, parameters, true)\n\n const insertResult = InsertResult.from(queryResult)\n\n // console.timeEnd(\".query execution by database\");\n\n // load returning results and set them to the entity if entity updation is enabled\n if (\n this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n // console.time(\".updating entity\");\n await returningResultsEntityUpdator.insert(\n insertResult,\n valueSets,\n )\n // console.timeEnd(\".updating entity\");\n }\n\n // call after insertion methods in listeners and subscribers\n if (\n this.expressionMap.callListeners === true &&\n this.expressionMap.mainAlias!.hasMetadata\n ) {\n const broadcastResult = new BroadcasterResult()\n valueSets.forEach((valueSet) => {\n queryRunner.broadcaster.broadcastAfterInsertEvent(\n broadcastResult,\n this.expressionMap.mainAlias!.metadata,\n valueSet,\n )\n })\n await broadcastResult.wait()\n }\n\n // close transaction if we started it\n // console.time(\".commit\");\n if (transactionStartedByUs) {\n await queryRunner.commitTransaction()\n }\n // console.timeEnd(\".commit\");\n\n return insertResult\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 // console.time(\".releasing connection\");\n if (queryRunner !== this.queryRunner) {\n // means we created our own query runner\n await queryRunner.release()\n }\n // console.timeEnd(\".releasing connection\");\n // console.timeEnd(\"QueryBuilder.execute\");\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n into<T extends ObjectLiteral>(\n entityTarget: EntityTarget<T>,\n columns?: string[],\n ): InsertQueryBuilder<T> {\n entityTarget = InstanceChecker.isEntitySchema(entityTarget)\n ? entityTarget.options.name\n : entityTarget\n const mainAlias = this.createFromAlias(entityTarget)\n this.expressionMap.setMainAlias(mainAlias)\n this.expressionMap.insertColumns = columns || []\n return this as any as InsertQueryBuilder<T>\n }\n\n /**\n * Values needs to be inserted into table.\n */\n values(\n values:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n ): this {\n this.expressionMap.valuesSet = values\n return this\n }\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(\"insert\")) {\n throw new ReturningStatementNotSupportedError()\n }\n\n this.expressionMap.returning = returning\n return this\n }\n\n /**\n * Indicates if entity must be updated after insertion operations.\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 * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\n */\n onConflict(statement: string): this {\n this.expressionMap.onConflict = statement\n return this\n }\n\n /**\n * Adds additional ignore statement supported in databases.\n */\n orIgnore(statement: string | boolean = true): this {\n this.expressionMap.onIgnore = !!statement\n return this\n }\n\n /**\n * @deprecated\n *\n * `.orUpdate({ columns: [ \"is_updated\" ] }).setParameter(\"is_updated\", value)`\n *\n * is now `.orUpdate([\"is_updated\"])`\n *\n * `.orUpdate({ conflict_target: ['date'], overwrite: ['title'] })`\n *\n * is now `.orUpdate(['title'], ['date'])`\n *\n */\n orUpdate(statement?: {\n columns?: string[]\n overwrite?: string[]\n conflict_target?: string | string[]\n }): this\n\n orUpdate(\n overwrite: string[],\n conflictTarget?: string | string[],\n orUpdateOptions?: InsertOrUpdateOptions,\n ): this\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(\n statementOrOverwrite?:\n | {\n columns?: string[]\n overwrite?: string[]\n conflict_target?: string | string[]\n }\n | string[],\n conflictTarget?: string | string[],\n orUpdateOptions?: InsertOrUpdateOptions,\n ): this {\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n skipUpdateIfNoValuesChanged:\n orUpdateOptions?.skipUpdateIfNoValuesChanged,\n upsertType: orUpdateOptions?.upsertType,\n }\n return this\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n skipUpdateIfNoValuesChanged:\n orUpdateOptions?.skipUpdateIfNoValuesChanged,\n indexPredicate: orUpdateOptions?.indexPredicate,\n upsertType: orUpdateOptions?.upsertType,\n }\n return this\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates INSERT express used to perform insert query.\n */\n protected createInsertExpression() {\n const tableName = this.getTableName(this.getMainTableName())\n const valuesExpression = this.createValuesExpression() // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n const returningExpression =\n this.connection.driver.options.type === \"oracle\" &&\n this.getValueSets().length > 1\n ? null\n : this.createReturningExpression(\"insert\") // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression()\n let query = \"INSERT \"\n\n if (this.expressionMap.onUpdate?.upsertType === \"primary-key\") {\n query = \"UPSERT \"\n }\n\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n query += `${this.expressionMap.onIgnore ? \" IGNORE \" : \"\"}`\n }\n\n query += `INTO ${tableName}`\n\n if (\n this.alias !== this.getMainTableName() &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n query += ` AS \"${this.alias}\"`\n }\n\n // add columns expression\n if (columnsExpression) {\n query += `(${columnsExpression})`\n } else {\n if (\n !valuesExpression &&\n (DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\")\n )\n // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\"\n }\n\n // add OUTPUT expression\n if (\n returningExpression &&\n this.connection.driver.options.type === \"mssql\"\n ) {\n query += ` OUTPUT ${returningExpression}`\n }\n\n // add VALUES expression\n if (valuesExpression) {\n if (\n (this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"sap\") &&\n this.getValueSets().length > 1\n ) {\n query += ` ${valuesExpression}`\n } else {\n query += ` VALUES ${valuesExpression}`\n }\n } else {\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\"\n ) {\n // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\"\n } else {\n query += ` DEFAULT VALUES`\n }\n }\n if (this.expressionMap.onUpdate?.upsertType !== \"primary-key\") {\n if (\n this.connection.driver.supportedUpsertTypes.includes(\n \"on-conflict-do-update\",\n )\n ) {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \"\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `\n } else if (this.expressionMap.onUpdate) {\n const {\n overwrite,\n columns,\n conflict,\n skipUpdateIfNoValuesChanged,\n indexPredicate,\n } = this.expressionMap.onUpdate\n\n let conflictTarget = \"ON CONFLICT\"\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict\n .map((column) => this.escape(column))\n .join(\", \")} )`\n if (\n indexPredicate &&\n !DriverUtils.isPostgresFamily(\n this.connection.driver,\n )\n ) {\n throw new TypeORMError(\n `indexPredicate option is not supported by the current database driver`,\n )\n }\n if (\n indexPredicate &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n conflictTarget += ` WHERE ( ${indexPredicate} )`\n }\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(\n conflict,\n )}`\n }\n\n const updatePart: string[] = []\n\n if (Array.isArray(overwrite)) {\n updatePart.push(\n ...overwrite.map(\n (column) =>\n `${this.escape(\n column,\n )} = EXCLUDED.${this.escape(column)}`,\n ),\n )\n } else if (columns) {\n updatePart.push(\n ...columns.map(\n (column) =>\n `${this.escape(column)} = :${column}`,\n ),\n )\n }\n\n if (updatePart.length > 0) {\n query += ` ${conflictTarget} DO UPDATE SET `\n\n updatePart.push(\n ...this.expressionMap\n .mainAlias!.metadata.columns.filter(\n (column) =>\n column.isUpdateDate &&\n !overwrite?.includes(\n column.databaseName,\n ) &&\n !(\n (this.connection.driver.options\n .type === \"oracle\" &&\n this.getValueSets().length >\n 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options\n .type === \"sap\" ||\n this.connection.driver.options\n .type === \"spanner\"\n ),\n )\n .map(\n (column) =>\n `${this.escape(\n column.databaseName,\n )} = DEFAULT`,\n ),\n )\n\n query += updatePart.join(\", \")\n query += \" \"\n }\n\n if (\n Array.isArray(overwrite) &&\n skipUpdateIfNoValuesChanged &&\n DriverUtils.isPostgresFamily(this.connection.driver)\n ) {\n query += ` WHERE (`\n query += overwrite\n .map(\n (column) =>\n `${tableName}.${this.escape(\n column,\n )} IS DISTINCT FROM EXCLUDED.${this.escape(\n column,\n )}`,\n )\n .join(\" OR \")\n query += \") \"\n }\n }\n } else if (\n this.connection.driver.supportedUpsertTypes.includes(\n \"on-duplicate-key-update\",\n )\n ) {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \"\n query += overwrite\n .map(\n (column) =>\n `${this.escape(\n column,\n )} = VALUES(${this.escape(column)})`,\n )\n .join(\", \")\n query += \" \"\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \"\n query += columns\n .map(\n (column) =>\n `${this.escape(column)} = :${column}`,\n )\n .join(\", \")\n query += \" \"\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(\n `onUpdate is not supported by the current database driver`,\n )\n }\n }\n }\n\n // add RETURNING expression\n if (\n returningExpression &&\n (DriverUtils.isPostgresFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"cockroachdb\" ||\n DriverUtils.isMySQLFamily(this.connection.driver))\n ) {\n query += ` RETURNING ${returningExpression}`\n }\n\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (\n this.connection.driver.options.type === \"mssql\" &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap\n .mainAlias!.metadata.columns.filter((column) =>\n this.expressionMap.insertColumns.length > 0\n ? this.expressionMap.insertColumns.indexOf(\n column.propertyPath,\n ) !== -1\n : column.isInsert,\n )\n .some((column) =>\n this.isOverridingAutoIncrementBehavior(column),\n )\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`\n }\n\n return query\n }\n\n /**\n * Gets list of columns where values must be inserted to.\n */\n protected getInsertedColumns(): ColumnMetadata[] {\n if (!this.expressionMap.mainAlias!.hasMetadata) return []\n\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n // if user specified list of columns he wants to insert to, then we filter only them\n if (this.expressionMap.insertColumns.length)\n return (\n this.expressionMap.insertColumns.indexOf(\n column.propertyPath,\n ) !== -1\n )\n\n // skip columns the user doesn't want included by default\n if (!column.isInsert) {\n return false\n }\n\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (\n column.isGenerated &&\n column.generationStrategy === \"increment\" &&\n !(this.connection.driver.options.type === \"spanner\") &&\n !(this.connection.driver.options.type === \"oracle\") &&\n !DriverUtils.isSQLiteFamily(this.connection.driver) &&\n !DriverUtils.isMySQLFamily(this.connection.driver) &&\n !(this.connection.driver.options.type === \"aurora-mysql\") &&\n !(\n this.connection.driver.options.type === \"mssql\" &&\n this.isOverridingAutoIncrementBehavior(column)\n )\n )\n return false\n\n return true\n },\n )\n }\n\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n protected createColumnNamesExpression(): string {\n const columns = this.getInsertedColumns()\n if (columns.length > 0)\n return columns\n .map((column) => this.escape(column.databaseName))\n .join(\", \")\n\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (\n !this.expressionMap.mainAlias!.hasMetadata &&\n !this.expressionMap.insertColumns.length\n ) {\n const valueSets = this.getValueSets()\n if (valueSets.length === 1)\n return Object.keys(valueSets[0])\n .map((columnName) => this.escape(columnName))\n .join(\", \")\n }\n\n // get a table name and all column database names\n return this.expressionMap.insertColumns\n .map((columnName) => this.escape(columnName))\n .join(\", \")\n }\n\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n protected createValuesExpression(): string {\n const valueSets = this.getValueSets()\n const columns = this.getInsertedColumns()\n\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n let expression = \"\"\n valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (\n this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" SELECT \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" SELECT \"\n } else {\n expression += \"(\"\n }\n }\n\n // extract real value from the entity\n let value = column.getEntityValue(valueSet)\n\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(typeof value === \"function\")) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n\n if (!(typeof value === \"function\")) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(\n value,\n column,\n )\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression += \"1\"\n\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n } else if (column.isDiscriminator) {\n expression += this.createParameter(\n this.expressionMap.mainAlias!.metadata\n .discriminatorValue,\n )\n // return \"1\";\n\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n } else if (\n column.isGenerated &&\n column.generationStrategy === \"uuid\" &&\n !this.connection.driver.isUUIDGenerationSupported() &&\n value === undefined\n ) {\n value = uuidv4()\n expression += this.createParameter(value)\n\n if (\n !(\n valueSetIndex in\n this.expressionMap.locallyGenerated\n )\n ) {\n this.expressionMap.locallyGenerated[valueSetIndex] =\n {}\n }\n column.setEntityValue(\n this.expressionMap.locallyGenerated[valueSetIndex],\n value,\n )\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (\n (this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (\n column.default !== undefined &&\n column.default !== null\n ) {\n // try to use default defined in the column\n expression +=\n this.connection.driver.normalizeDefault(\n column,\n )\n } else {\n expression += \"NULL\" // otherwise simply use NULL and pray if column is nullable\n }\n } else {\n expression += \"DEFAULT\"\n }\n } else if (\n value === null &&\n (this.connection.driver.options.type === \"spanner\" ||\n this.connection.driver.options.type === \"oracle\")\n ) {\n expression += \"NULL\"\n\n // support for SQL expressions in queries\n } else if (typeof value === \"function\") {\n expression += value()\n\n // just any other regular value\n } else {\n if (this.connection.driver.options.type === \"mssql\")\n value = (\n this.connection.driver as SqlServerDriver\n ).parametrizeValue(column, value)\n\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\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 DriverUtils.isPostgresFamily(\n this.connection.driver,\n ) &&\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 === \"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 }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (\n this.connection.driver.options.type ===\n \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM DUAL \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM dummy \"\n } else {\n expression += \")\"\n }\n } else {\n if (\n this.connection.driver.options.type ===\n \"oracle\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM DUAL UNION ALL \"\n } else if (\n this.connection.driver.options.type === \"sap\" &&\n valueSets.length > 1\n ) {\n expression += \" FROM dummy UNION ALL \"\n } else {\n expression += \"), \"\n }\n }\n } else {\n expression += \", \"\n }\n })\n })\n if (expression === \"()\") return \"\"\n\n return expression\n } else {\n // for tables without metadata\n // get values needs to be inserted\n let expression = \"\"\n\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet)\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\"\n }\n\n const value = valueSet[columnName]\n\n // support for SQL expressions in queries\n if (typeof value === \"function\") {\n expression += value()\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (\n (this.connection.driver.options.type === \"oracle\" &&\n valueSets.length > 1) ||\n DriverUtils.isSQLiteFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n expression += \"NULL\"\n } else {\n expression += \"DEFAULT\"\n }\n } else if (\n value === null &&\n this.connection.driver.options.type === \"spanner\"\n ) {\n // just any other regular value\n } else {\n expression += this.createParameter(value)\n }\n\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression += \")\"\n } else {\n expression += \"), \"\n }\n } else {\n expression += \", \"\n }\n })\n })\n if (expression === \"()\") return \"\"\n return expression\n }\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSets(): ObjectLiteral[] {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet\n\n if (ObjectUtils.isObject(this.expressionMap.valuesSet))\n return [this.expressionMap.valuesSet]\n\n throw new InsertValuesMissingError()\n }\n\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(\n column: ColumnMetadata,\n ): boolean {\n return (\n column.isPrimary &&\n column.isGenerated &&\n column.generationStrategy === \"increment\" &&\n this.getValueSets().some(\n (valueSet) =>\n column.getEntityValue(valueSet) !== undefined &&\n column.getEntityValue(valueSet) !== null,\n )\n )\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/subscriber/event/QueryEvent.ts"],"names":[],"mappings":"","file":"QueryEvent.js","sourcesContent":["import { EntityManager } from \"../../entity-manager/EntityManager\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\n\n/**\n * BeforeQueryEvent is an object that broadcaster sends to the entity subscriber before query is ran against the database.\n */\nexport interface QueryEvent<Entity> {\n /**\n * Connection used in the event.\n */\n connection: DataSource\n\n /**\n * QueryRunner used in the event transaction.\n * All database operations in the subscribed event listener should be performed using this query runner instance.\n */\n queryRunner: QueryRunner\n\n /**\n * EntityManager used in the event transaction.\n * All database operations in the subscribed event listener should be performed using this entity manager instance.\n */\n manager: EntityManager\n\n /**\n * Query that is being executed.\n */\n query: string\n\n /**\n * Parameters used in the query.\n */\n parameters?: any[]\n}\n\nexport interface BeforeQueryEvent<Entity> extends QueryEvent<Entity> {}\n\nexport interface AfterQueryEvent<Entity> extends QueryEvent<Entity> {\n /**\n * Whether the query was successful.\n */\n success: boolean\n\n /**\n * The duration of the query execution.\n */\n executionTime?: number\n\n /**\n * The raw results from the database if the query was successful.\n */\n rawResults?: any\n\n /**\n * The error thrown if the query was unsuccessful.\n */\n error?: any\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/subscriber/event/QueryEvent.ts"],"names":[],"mappings":"","file":"QueryEvent.js","sourcesContent":["import { EntityManager } from \"../../entity-manager/EntityManager\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\n\n/**\n * BeforeQueryEvent is an object that broadcaster sends to the entity subscriber before query is ran against the database.\n */\nexport interface QueryEvent<Entity> {\n /**\n * Connection used in the event.\n */\n connection: DataSource\n\n /**\n * QueryRunner used in the event transaction.\n * All database operations in the subscribed event listener should be performed using this query runner instance.\n */\n queryRunner: QueryRunner\n\n /**\n * EntityManager used in the event transaction.\n * All database operations in the subscribed event listener should be performed using this entity manager instance.\n */\n manager: EntityManager\n\n /**\n * Query that is being executed.\n */\n query: string\n\n /**\n * Parameters used in the query.\n */\n parameters?: any[]\n}\n\nexport interface BeforeQueryEvent<Entity> extends QueryEvent<Entity> {}\n\nexport interface AfterQueryEvent<Entity> extends QueryEvent<Entity> {\n /**\n * Whether the query was successful.\n */\n success: boolean\n\n /**\n * The duration of the query execution, in milliseconds.\n */\n executionTime?: number\n\n /**\n * The raw results from the database if the query was successful.\n */\n rawResults?: any\n\n /**\n * The error thrown if the query was unsuccessful.\n */\n error?: any\n}\n"],"sourceRoot":"../.."}
|
|
@@ -94,14 +94,14 @@ class MigrationGenerateCommand {
|
|
|
94
94
|
}
|
|
95
95
|
sqlInMemory.upQueries.forEach((upQuery) => {
|
|
96
96
|
upSqls.push(" await queryRunner.query(`" +
|
|
97
|
-
upQuery.query.
|
|
97
|
+
upQuery.query.replaceAll("`", "\\`") +
|
|
98
98
|
"`" +
|
|
99
99
|
MigrationGenerateCommand.queryParams(upQuery.parameters) +
|
|
100
100
|
");");
|
|
101
101
|
});
|
|
102
102
|
sqlInMemory.downQueries.forEach((downQuery) => {
|
|
103
103
|
downSqls.push(" await queryRunner.query(`" +
|
|
104
|
-
downQuery.query.
|
|
104
|
+
downQuery.query.replaceAll("`", "\\`") +
|
|
105
105
|
"`" +
|
|
106
106
|
MigrationGenerateCommand.queryParams(downQuery.parameters) +
|
|
107
107
|
");");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/MigrationGenerateCommand.ts"],"names":[],"mappings":"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","file":"MigrationGenerateCommand.js","sourcesContent":["import { format } from \"@sqltools/formatter/lib/sqlFormatter\"\nimport ansi from \"ansis\"\nimport path from \"path\"\nimport process from \"process\"\nimport yargs from \"yargs\"\nimport { DataSource } from \"../data-source\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { camelCase } from \"../util/StringUtils\"\nimport { CommandUtils } from \"./CommandUtils\"\n\n/**\n * Generates a new migration file with sql needs to be executed to update schema.\n */\nexport class MigrationGenerateCommand implements yargs.CommandModule {\n command = \"migration:generate <path>\"\n describe =\n \"Generates a new migration file with sql needs to be executed to update schema.\"\n\n builder(args: yargs.Argv) {\n return args\n .positional(\"path\", {\n type: \"string\",\n describe: \"Path of the migration file\",\n demandOption: true,\n })\n .option(\"dataSource\", {\n alias: \"d\",\n type: \"string\",\n describe:\n \"Path to the file where your DataSource instance is defined.\",\n demandOption: true,\n })\n .option(\"p\", {\n alias: \"pretty\",\n type: \"boolean\",\n default: false,\n describe: \"Pretty-print generated SQL\",\n })\n .option(\"o\", {\n alias: \"outputJs\",\n type: \"boolean\",\n default: false,\n describe:\n \"Generate a migration file on Javascript instead of Typescript\",\n })\n .option(\"dr\", {\n alias: \"dryrun\",\n type: \"boolean\",\n default: false,\n describe:\n \"Prints out the contents of the migration instead of writing it to a file\",\n })\n .option(\"ch\", {\n alias: \"check\",\n type: \"boolean\",\n default: false,\n describe:\n \"Verifies that the current database is up to date and that no migrations are needed. Otherwise exits with code 1.\",\n })\n .option(\"t\", {\n alias: \"timestamp\",\n type: \"number\",\n default: false,\n describe: \"Custom timestamp for the migration name\",\n })\n }\n\n async handler(args: yargs.Arguments<any & { path: string }>) {\n const timestamp = CommandUtils.getTimestamp(args.timestamp)\n const extension = args.outputJs ? \".js\" : \".ts\"\n const fullPath = args.path.startsWith(\"/\")\n ? args.path\n : path.resolve(process.cwd(), args.path)\n const filename = timestamp + \"-\" + path.basename(fullPath) + extension\n\n let dataSource: DataSource | undefined = undefined\n try {\n dataSource = await CommandUtils.loadDataSource(\n path.resolve(process.cwd(), args.dataSource as string),\n )\n dataSource.setOptions({\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: false,\n })\n await dataSource.initialize()\n\n const upSqls: string[] = [],\n downSqls: string[] = []\n\n try {\n const sqlInMemory = await dataSource.driver\n .createSchemaBuilder()\n .log()\n\n if (args.pretty) {\n sqlInMemory.upQueries.forEach((upQuery) => {\n upQuery.query = MigrationGenerateCommand.prettifyQuery(\n upQuery.query,\n )\n })\n sqlInMemory.downQueries.forEach((downQuery) => {\n downQuery.query =\n MigrationGenerateCommand.prettifyQuery(\n downQuery.query,\n )\n })\n }\n\n sqlInMemory.upQueries.forEach((upQuery) => {\n upSqls.push(\n \" await queryRunner.query(`\" +\n upQuery.query.replace(new RegExp(\"`\", \"g\"), \"\\\\`\") +\n \"`\" +\n MigrationGenerateCommand.queryParams(\n upQuery.parameters,\n ) +\n \");\",\n )\n })\n sqlInMemory.downQueries.forEach((downQuery) => {\n downSqls.push(\n \" await queryRunner.query(`\" +\n downQuery.query.replace(\n new RegExp(\"`\", \"g\"),\n \"\\\\`\",\n ) +\n \"`\" +\n MigrationGenerateCommand.queryParams(\n downQuery.parameters,\n ) +\n \");\",\n )\n })\n } finally {\n await dataSource.destroy()\n }\n\n if (!upSqls.length) {\n if (args.check) {\n console.log(\n ansi.green`No changes in database schema were found`,\n )\n process.exit(0)\n } else {\n console.log(\n ansi.yellow`No changes in database schema were found - cannot generate a migration. To create a new empty migration use \"typeorm migration:create\" command`,\n )\n process.exit(1)\n }\n } else if (!args.path) {\n console.log(ansi.yellow`Please specify a migration path`)\n process.exit(1)\n }\n\n const fileContent = args.outputJs\n ? MigrationGenerateCommand.getJavascriptTemplate(\n path.basename(fullPath),\n timestamp,\n upSqls,\n downSqls.reverse(),\n )\n : MigrationGenerateCommand.getTemplate(\n path.basename(fullPath),\n timestamp,\n upSqls,\n downSqls.reverse(),\n )\n\n if (args.check) {\n console.log(\n ansi.yellow`Unexpected changes in database schema were found in check mode:\\n\\n${ansi.white(\n fileContent,\n )}`,\n )\n process.exit(1)\n }\n\n if (args.dryrun) {\n console.log(\n ansi.green(\n `Migration ${ansi.blue(\n fullPath + extension,\n )} has content:\\n\\n${ansi.white(fileContent)}`,\n ),\n )\n } else {\n const migrationFileName =\n path.dirname(fullPath) + \"/\" + filename\n await CommandUtils.createFile(migrationFileName, fileContent)\n\n console.log(\n ansi.green`Migration ${ansi.blue(\n migrationFileName,\n )} has been generated successfully.`,\n )\n if (args.exitProcess !== false) {\n process.exit(0)\n }\n }\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during migration generation:\", err)\n process.exit(1)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Formats query parameters for migration queries if parameters actually exist\n */\n protected static queryParams(parameters: any[] | undefined): string {\n if (!parameters || !parameters.length) {\n return \"\"\n }\n\n return `, ${JSON.stringify(parameters)}`\n }\n\n /**\n * Gets contents of the migration file.\n */\n protected static getTemplate(\n name: string,\n timestamp: number,\n upSqls: string[],\n downSqls: string[],\n ): string {\n const migrationName = `${camelCase(name, true)}${timestamp}`\n\n return `import { MigrationInterface, QueryRunner } from \"typeorm\";\n\nexport class ${migrationName} implements MigrationInterface {\n name = '${migrationName}'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n${upSqls.join(`\n`)}\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n${downSqls.join(`\n`)}\n }\n\n}\n`\n }\n\n /**\n * Gets contents of the migration file in Javascript.\n */\n protected static getJavascriptTemplate(\n name: string,\n timestamp: number,\n upSqls: string[],\n downSqls: string[],\n ): string {\n const migrationName = `${camelCase(name, true)}${timestamp}`\n\n return `module.exports = class ${migrationName} {\n name = '${migrationName}'\n\n async up(queryRunner) {\n${upSqls.join(`\n`)}\n }\n\n async down(queryRunner) {\n${downSqls.join(`\n`)}\n }\n}\n`\n }\n\n /**\n *\n */\n protected static prettifyQuery(query: string) {\n const formattedQuery = format(query, { indent: \" \" })\n return (\n \"\\n\" + formattedQuery.replace(/^/gm, \" \") + \"\\n \"\n )\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/MigrationGenerateCommand.ts"],"names":[],"mappings":"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","file":"MigrationGenerateCommand.js","sourcesContent":["import { format } from \"@sqltools/formatter/lib/sqlFormatter\"\nimport ansi from \"ansis\"\nimport path from \"path\"\nimport process from \"process\"\nimport yargs from \"yargs\"\nimport { DataSource } from \"../data-source\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { camelCase } from \"../util/StringUtils\"\nimport { CommandUtils } from \"./CommandUtils\"\n\n/**\n * Generates a new migration file with sql needs to be executed to update schema.\n */\nexport class MigrationGenerateCommand implements yargs.CommandModule {\n command = \"migration:generate <path>\"\n describe =\n \"Generates a new migration file with sql needs to be executed to update schema.\"\n\n builder(args: yargs.Argv) {\n return args\n .positional(\"path\", {\n type: \"string\",\n describe: \"Path of the migration file\",\n demandOption: true,\n })\n .option(\"dataSource\", {\n alias: \"d\",\n type: \"string\",\n describe:\n \"Path to the file where your DataSource instance is defined.\",\n demandOption: true,\n })\n .option(\"p\", {\n alias: \"pretty\",\n type: \"boolean\",\n default: false,\n describe: \"Pretty-print generated SQL\",\n })\n .option(\"o\", {\n alias: \"outputJs\",\n type: \"boolean\",\n default: false,\n describe:\n \"Generate a migration file on Javascript instead of Typescript\",\n })\n .option(\"dr\", {\n alias: \"dryrun\",\n type: \"boolean\",\n default: false,\n describe:\n \"Prints out the contents of the migration instead of writing it to a file\",\n })\n .option(\"ch\", {\n alias: \"check\",\n type: \"boolean\",\n default: false,\n describe:\n \"Verifies that the current database is up to date and that no migrations are needed. Otherwise exits with code 1.\",\n })\n .option(\"t\", {\n alias: \"timestamp\",\n type: \"number\",\n default: false,\n describe: \"Custom timestamp for the migration name\",\n })\n }\n\n async handler(args: yargs.Arguments<any & { path: string }>) {\n const timestamp = CommandUtils.getTimestamp(args.timestamp)\n const extension = args.outputJs ? \".js\" : \".ts\"\n const fullPath = args.path.startsWith(\"/\")\n ? args.path\n : path.resolve(process.cwd(), args.path)\n const filename = timestamp + \"-\" + path.basename(fullPath) + extension\n\n let dataSource: DataSource | undefined = undefined\n try {\n dataSource = await CommandUtils.loadDataSource(\n path.resolve(process.cwd(), args.dataSource as string),\n )\n dataSource.setOptions({\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: false,\n })\n await dataSource.initialize()\n\n const upSqls: string[] = [],\n downSqls: string[] = []\n\n try {\n const sqlInMemory = await dataSource.driver\n .createSchemaBuilder()\n .log()\n\n if (args.pretty) {\n sqlInMemory.upQueries.forEach((upQuery) => {\n upQuery.query = MigrationGenerateCommand.prettifyQuery(\n upQuery.query,\n )\n })\n sqlInMemory.downQueries.forEach((downQuery) => {\n downQuery.query =\n MigrationGenerateCommand.prettifyQuery(\n downQuery.query,\n )\n })\n }\n\n sqlInMemory.upQueries.forEach((upQuery) => {\n upSqls.push(\n \" await queryRunner.query(`\" +\n upQuery.query.replaceAll(\"`\", \"\\\\`\") +\n \"`\" +\n MigrationGenerateCommand.queryParams(\n upQuery.parameters,\n ) +\n \");\",\n )\n })\n sqlInMemory.downQueries.forEach((downQuery) => {\n downSqls.push(\n \" await queryRunner.query(`\" +\n downQuery.query.replaceAll(\"`\", \"\\\\`\") +\n \"`\" +\n MigrationGenerateCommand.queryParams(\n downQuery.parameters,\n ) +\n \");\",\n )\n })\n } finally {\n await dataSource.destroy()\n }\n\n if (!upSqls.length) {\n if (args.check) {\n console.log(\n ansi.green`No changes in database schema were found`,\n )\n process.exit(0)\n } else {\n console.log(\n ansi.yellow`No changes in database schema were found - cannot generate a migration. To create a new empty migration use \"typeorm migration:create\" command`,\n )\n process.exit(1)\n }\n } else if (!args.path) {\n console.log(ansi.yellow`Please specify a migration path`)\n process.exit(1)\n }\n\n const fileContent = args.outputJs\n ? MigrationGenerateCommand.getJavascriptTemplate(\n path.basename(fullPath),\n timestamp,\n upSqls,\n downSqls.reverse(),\n )\n : MigrationGenerateCommand.getTemplate(\n path.basename(fullPath),\n timestamp,\n upSqls,\n downSqls.reverse(),\n )\n\n if (args.check) {\n console.log(\n ansi.yellow`Unexpected changes in database schema were found in check mode:\\n\\n${ansi.white(\n fileContent,\n )}`,\n )\n process.exit(1)\n }\n\n if (args.dryrun) {\n console.log(\n ansi.green(\n `Migration ${ansi.blue(\n fullPath + extension,\n )} has content:\\n\\n${ansi.white(fileContent)}`,\n ),\n )\n } else {\n const migrationFileName =\n path.dirname(fullPath) + \"/\" + filename\n await CommandUtils.createFile(migrationFileName, fileContent)\n\n console.log(\n ansi.green`Migration ${ansi.blue(\n migrationFileName,\n )} has been generated successfully.`,\n )\n if (args.exitProcess !== false) {\n process.exit(0)\n }\n }\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during migration generation:\", err)\n process.exit(1)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Formats query parameters for migration queries if parameters actually exist\n */\n protected static queryParams(parameters: any[] | undefined): string {\n if (!parameters || !parameters.length) {\n return \"\"\n }\n\n return `, ${JSON.stringify(parameters)}`\n }\n\n /**\n * Gets contents of the migration file.\n */\n protected static getTemplate(\n name: string,\n timestamp: number,\n upSqls: string[],\n downSqls: string[],\n ): string {\n const migrationName = `${camelCase(name, true)}${timestamp}`\n\n return `import { MigrationInterface, QueryRunner } from \"typeorm\";\n\nexport class ${migrationName} implements MigrationInterface {\n name = '${migrationName}'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n${upSqls.join(`\n`)}\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n${downSqls.join(`\n`)}\n }\n\n}\n`\n }\n\n /**\n * Gets contents of the migration file in Javascript.\n */\n protected static getJavascriptTemplate(\n name: string,\n timestamp: number,\n upSqls: string[],\n downSqls: string[],\n ): string {\n const migrationName = `${camelCase(name, true)}${timestamp}`\n\n return `module.exports = class ${migrationName} {\n name = '${migrationName}'\n\n async up(queryRunner) {\n${upSqls.join(`\n`)}\n }\n\n async down(queryRunner) {\n${downSqls.join(`\n`)}\n }\n}\n`\n }\n\n /**\n *\n */\n protected static prettifyQuery(query: string) {\n const formattedQuery = format(query, { indent: \" \" })\n return (\n \"\\n\" + formattedQuery.replace(/^/gm, \" \") + \"\\n \"\n )\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -4,11 +4,11 @@ exports.ConnectionOptionsReader = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const app_root_path_1 = tslib_1.__importDefault(require("app-root-path"));
|
|
6
6
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
|
-
const PlatformTools_1 = require("../platform/PlatformTools");
|
|
8
|
-
const ConnectionOptionsEnvReader_1 = require("./options-reader/ConnectionOptionsEnvReader");
|
|
9
7
|
const error_1 = require("../error");
|
|
10
|
-
const
|
|
8
|
+
const PlatformTools_1 = require("../platform/PlatformTools");
|
|
11
9
|
const ImportUtils_1 = require("../util/ImportUtils");
|
|
10
|
+
const PathUtils_1 = require("../util/PathUtils");
|
|
11
|
+
const ConnectionOptionsEnvReader_1 = require("./options-reader/ConnectionOptionsEnvReader");
|
|
12
12
|
/**
|
|
13
13
|
* Reads connection options from the ormconfig.
|
|
14
14
|
*/
|
|
@@ -184,17 +184,13 @@ class ConnectionOptionsReader {
|
|
|
184
184
|
* Gets directory where configuration file should be located.
|
|
185
185
|
*/
|
|
186
186
|
get baseDirectory() {
|
|
187
|
-
|
|
188
|
-
return this.options.root;
|
|
189
|
-
return app_root_path_1.default.path;
|
|
187
|
+
return this.options?.root ?? app_root_path_1.default.path;
|
|
190
188
|
}
|
|
191
189
|
/**
|
|
192
190
|
* Gets configuration file name.
|
|
193
191
|
*/
|
|
194
192
|
get baseConfigName() {
|
|
195
|
-
|
|
196
|
-
return this.options.configName;
|
|
197
|
-
return "ormconfig";
|
|
193
|
+
return this.options?.configName ?? "ormconfig";
|
|
198
194
|
}
|
|
199
195
|
}
|
|
200
196
|
exports.ConnectionOptionsReader = ConnectionOptionsReader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/connection/ConnectionOptionsReader.ts"],"names":[],"mappings":"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","file":"ConnectionOptionsReader.js","sourcesContent":["import appRootPath from \"app-root-path\"\nimport path from \"path\"\nimport { DataSourceOptions } from \"../data-source/DataSourceOptions\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { ConnectionOptionsEnvReader } from \"./options-reader/ConnectionOptionsEnvReader\"\nimport { TypeORMError } from \"../error\"\nimport { isAbsolute } from \"../util/PathUtils\"\nimport { importOrRequireFile } from \"../util/ImportUtils\"\n\n/**\n * Reads connection options from the ormconfig.\n */\nexport class ConnectionOptionsReader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected options?: {\n /**\n * Directory where ormconfig should be read from.\n * By default its your application root (where your app package.json is located).\n */\n root?: string\n\n /**\n * Filename of the ormconfig configuration. By default its equal to \"ormconfig\".\n */\n configName?: string\n },\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Returns all connection options read from the ormconfig.\n */\n async all(): Promise<DataSourceOptions[]> {\n const options = await this.load()\n if (!options)\n throw new TypeORMError(\n `No connection options were found in any orm configuration files.`,\n )\n\n return options\n }\n\n /**\n * Gets a connection with a given name read from ormconfig.\n * If connection with such name would not be found then it throw error.\n */\n async get(name: string): Promise<DataSourceOptions> {\n const allOptions = await this.all()\n const targetOptions = allOptions.find(\n (options) =>\n options.name === name || (name === \"default\" && !options.name),\n )\n if (!targetOptions)\n throw new TypeORMError(\n `Cannot find connection ${name} because its not defined in any orm configuration files.`,\n )\n\n return targetOptions\n }\n\n /**\n * Checks if there is a TypeORM configuration file.\n */\n async has(name: string): Promise<boolean> {\n const allOptions = await this.load()\n if (!allOptions) return false\n\n const targetOptions = allOptions.find(\n (options) =>\n options.name === name || (name === \"default\" && !options.name),\n )\n return !!targetOptions\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all connection options from a configuration file.\n *\n * todo: get in count NODE_ENV somehow\n */\n protected async load(): Promise<DataSourceOptions[] | undefined> {\n let connectionOptions:\n | DataSourceOptions\n | DataSourceOptions[]\n | undefined = undefined\n\n const fileFormats = [\n \"env\",\n \"js\",\n \"mjs\",\n \"cjs\",\n \"ts\",\n \"mts\",\n \"cts\",\n \"json\",\n ]\n\n // Detect if baseFilePath contains file extension\n const possibleExtension = this.baseFilePath.substr(\n this.baseFilePath.lastIndexOf(\".\"),\n )\n const fileExtension = fileFormats.find(\n (extension) => `.${extension}` === possibleExtension,\n )\n\n // try to find any of following configuration formats\n const foundFileFormat =\n fileExtension ||\n fileFormats.find((format) => {\n return PlatformTools.fileExist(this.baseFilePath + \".\" + format)\n })\n\n // Determine config file name\n const configFile = fileExtension\n ? this.baseFilePath\n : this.baseFilePath + \".\" + foundFileFormat\n\n // if .env file found then load all its variables into process.env using dotenv package\n if (foundFileFormat === \"env\") {\n PlatformTools.dotenv(configFile)\n } else if (PlatformTools.fileExist(this.baseDirectory + \"/.env\")) {\n PlatformTools.dotenv(this.baseDirectory + \"/.env\")\n }\n\n // try to find connection options from any of available sources of configuration\n if (\n PlatformTools.getEnvVariable(\"TYPEORM_CONNECTION\") ||\n PlatformTools.getEnvVariable(\"TYPEORM_URL\")\n ) {\n connectionOptions = await new ConnectionOptionsEnvReader().read()\n } else if (\n foundFileFormat === \"js\" ||\n foundFileFormat === \"mjs\" ||\n foundFileFormat === \"cjs\" ||\n foundFileFormat === \"ts\" ||\n foundFileFormat === \"mts\" ||\n foundFileFormat === \"cts\"\n ) {\n const [importOrRequireResult, moduleSystem] =\n await importOrRequireFile(configFile)\n const configModule = await importOrRequireResult\n\n if (\n moduleSystem === \"esm\" ||\n (configModule &&\n \"__esModule\" in configModule &&\n \"default\" in configModule)\n ) {\n connectionOptions = configModule.default\n } else {\n connectionOptions = configModule\n }\n } else if (foundFileFormat === \"json\") {\n connectionOptions = require(configFile)\n }\n\n // normalize and return connection options\n if (connectionOptions) {\n return this.normalizeConnectionOptions(connectionOptions)\n }\n\n return undefined\n }\n\n /**\n * Normalize connection options.\n */\n protected normalizeConnectionOptions(\n connectionOptions: DataSourceOptions | DataSourceOptions[],\n ): DataSourceOptions[] {\n if (!Array.isArray(connectionOptions))\n connectionOptions = [connectionOptions]\n\n connectionOptions.forEach((options) => {\n options.baseDirectory = this.baseDirectory\n if (options.entities) {\n const entities = (options.entities as any[]).map((entity) => {\n if (\n typeof entity === \"string\" &&\n entity.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + entity\n\n return entity\n })\n Object.assign(connectionOptions, { entities: entities })\n }\n if (options.subscribers) {\n const subscribers = (options.subscribers as any[]).map(\n (subscriber) => {\n if (\n typeof subscriber === \"string\" &&\n subscriber.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + subscriber\n\n return subscriber\n },\n )\n Object.assign(connectionOptions, { subscribers: subscribers })\n }\n if (options.migrations) {\n const migrations = (options.migrations as any[]).map(\n (migration) => {\n if (\n typeof migration === \"string\" &&\n migration.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + migration\n\n return migration\n },\n )\n Object.assign(connectionOptions, { migrations: migrations })\n }\n\n // make database path file in sqlite relative to package.json\n if (\n options.type === \"sqlite\" ||\n options.type === \"better-sqlite3\"\n ) {\n if (\n typeof options.database === \"string\" &&\n !isAbsolute(options.database) &&\n options.database.substr(0, 1) !== \"/\" && // unix absolute\n options.database.substr(1, 2) !== \":\\\\\" && // windows absolute\n options.database !== \":memory:\"\n ) {\n Object.assign(options, {\n database: this.baseDirectory + \"/\" + options.database,\n })\n }\n }\n })\n\n return connectionOptions\n }\n\n /**\n * Gets directory where configuration file should be located and configuration file name.\n */\n protected get baseFilePath(): string {\n return path.resolve(this.baseDirectory, this.baseConfigName)\n }\n\n /**\n * Gets directory where configuration file should be located.\n */\n protected get baseDirectory(): string {\n if (this.options && this.options.root) return this.options.root\n\n return appRootPath.path\n }\n\n /**\n * Gets configuration file name.\n */\n protected get baseConfigName(): string {\n if (this.options && this.options.configName)\n return this.options.configName\n\n return \"ormconfig\"\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../../src/connection/ConnectionOptionsReader.ts"],"names":[],"mappings":"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","file":"ConnectionOptionsReader.js","sourcesContent":["import appRootPath from \"app-root-path\"\nimport path from \"path\"\n\nimport { DataSourceOptions } from \"../data-source/DataSourceOptions\"\nimport { TypeORMError } from \"../error\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { importOrRequireFile } from \"../util/ImportUtils\"\nimport { isAbsolute } from \"../util/PathUtils\"\nimport { ConnectionOptionsEnvReader } from \"./options-reader/ConnectionOptionsEnvReader\"\n\n/**\n * Reads connection options from the ormconfig.\n */\nexport class ConnectionOptionsReader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected options?: {\n /**\n * Directory where ormconfig should be read from.\n * By default its your application root (where your app package.json is located).\n */\n root?: string\n\n /**\n * Filename of the ormconfig configuration. By default its equal to \"ormconfig\".\n */\n configName?: string\n },\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Returns all connection options read from the ormconfig.\n */\n async all(): Promise<DataSourceOptions[]> {\n const options = await this.load()\n if (!options)\n throw new TypeORMError(\n `No connection options were found in any orm configuration files.`,\n )\n\n return options\n }\n\n /**\n * Gets a connection with a given name read from ormconfig.\n * If connection with such name would not be found then it throw error.\n */\n async get(name: string): Promise<DataSourceOptions> {\n const allOptions = await this.all()\n const targetOptions = allOptions.find(\n (options) =>\n options.name === name || (name === \"default\" && !options.name),\n )\n if (!targetOptions)\n throw new TypeORMError(\n `Cannot find connection ${name} because its not defined in any orm configuration files.`,\n )\n\n return targetOptions\n }\n\n /**\n * Checks if there is a TypeORM configuration file.\n */\n async has(name: string): Promise<boolean> {\n const allOptions = await this.load()\n if (!allOptions) return false\n\n const targetOptions = allOptions.find(\n (options) =>\n options.name === name || (name === \"default\" && !options.name),\n )\n return !!targetOptions\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all connection options from a configuration file.\n *\n * todo: get in count NODE_ENV somehow\n */\n protected async load(): Promise<DataSourceOptions[] | undefined> {\n let connectionOptions:\n | DataSourceOptions\n | DataSourceOptions[]\n | undefined = undefined\n\n const fileFormats = [\n \"env\",\n \"js\",\n \"mjs\",\n \"cjs\",\n \"ts\",\n \"mts\",\n \"cts\",\n \"json\",\n ]\n\n // Detect if baseFilePath contains file extension\n const possibleExtension = this.baseFilePath.substr(\n this.baseFilePath.lastIndexOf(\".\"),\n )\n const fileExtension = fileFormats.find(\n (extension) => `.${extension}` === possibleExtension,\n )\n\n // try to find any of following configuration formats\n const foundFileFormat =\n fileExtension ||\n fileFormats.find((format) => {\n return PlatformTools.fileExist(this.baseFilePath + \".\" + format)\n })\n\n // Determine config file name\n const configFile = fileExtension\n ? this.baseFilePath\n : this.baseFilePath + \".\" + foundFileFormat\n\n // if .env file found then load all its variables into process.env using dotenv package\n if (foundFileFormat === \"env\") {\n PlatformTools.dotenv(configFile)\n } else if (PlatformTools.fileExist(this.baseDirectory + \"/.env\")) {\n PlatformTools.dotenv(this.baseDirectory + \"/.env\")\n }\n\n // try to find connection options from any of available sources of configuration\n if (\n PlatformTools.getEnvVariable(\"TYPEORM_CONNECTION\") ||\n PlatformTools.getEnvVariable(\"TYPEORM_URL\")\n ) {\n connectionOptions = await new ConnectionOptionsEnvReader().read()\n } else if (\n foundFileFormat === \"js\" ||\n foundFileFormat === \"mjs\" ||\n foundFileFormat === \"cjs\" ||\n foundFileFormat === \"ts\" ||\n foundFileFormat === \"mts\" ||\n foundFileFormat === \"cts\"\n ) {\n const [importOrRequireResult, moduleSystem] =\n await importOrRequireFile(configFile)\n const configModule = await importOrRequireResult\n\n if (\n moduleSystem === \"esm\" ||\n (configModule &&\n \"__esModule\" in configModule &&\n \"default\" in configModule)\n ) {\n connectionOptions = configModule.default\n } else {\n connectionOptions = configModule\n }\n } else if (foundFileFormat === \"json\") {\n connectionOptions = require(configFile)\n }\n\n // normalize and return connection options\n if (connectionOptions) {\n return this.normalizeConnectionOptions(connectionOptions)\n }\n\n return undefined\n }\n\n /**\n * Normalize connection options.\n */\n protected normalizeConnectionOptions(\n connectionOptions: DataSourceOptions | DataSourceOptions[],\n ): DataSourceOptions[] {\n if (!Array.isArray(connectionOptions))\n connectionOptions = [connectionOptions]\n\n connectionOptions.forEach((options) => {\n options.baseDirectory = this.baseDirectory\n if (options.entities) {\n const entities = (options.entities as any[]).map((entity) => {\n if (\n typeof entity === \"string\" &&\n entity.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + entity\n\n return entity\n })\n Object.assign(connectionOptions, { entities: entities })\n }\n if (options.subscribers) {\n const subscribers = (options.subscribers as any[]).map(\n (subscriber) => {\n if (\n typeof subscriber === \"string\" &&\n subscriber.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + subscriber\n\n return subscriber\n },\n )\n Object.assign(connectionOptions, { subscribers: subscribers })\n }\n if (options.migrations) {\n const migrations = (options.migrations as any[]).map(\n (migration) => {\n if (\n typeof migration === \"string\" &&\n migration.substr(0, 1) !== \"/\"\n )\n return this.baseDirectory + \"/\" + migration\n\n return migration\n },\n )\n Object.assign(connectionOptions, { migrations: migrations })\n }\n\n // make database path file in sqlite relative to package.json\n if (\n options.type === \"sqlite\" ||\n options.type === \"better-sqlite3\"\n ) {\n if (\n typeof options.database === \"string\" &&\n !isAbsolute(options.database) &&\n options.database.substr(0, 1) !== \"/\" && // unix absolute\n options.database.substr(1, 2) !== \":\\\\\" && // windows absolute\n options.database !== \":memory:\"\n ) {\n Object.assign(options, {\n database: this.baseDirectory + \"/\" + options.database,\n })\n }\n }\n })\n\n return connectionOptions\n }\n\n /**\n * Gets directory where configuration file should be located and configuration file name.\n */\n protected get baseFilePath(): string {\n return path.resolve(this.baseDirectory, this.baseConfigName)\n }\n\n /**\n * Gets directory where configuration file should be located.\n */\n protected get baseDirectory(): string {\n return this.options?.root ?? appRootPath.path\n }\n\n /**\n * Gets configuration file name.\n */\n protected get baseConfigName(): string {\n return this.options?.configName ?? \"ormconfig\"\n }\n}\n"],"sourceRoot":".."}
|
package/driver/DriverFactory.js
CHANGED
|
@@ -13,7 +13,7 @@ const NativescriptDriver_1 = require("./nativescript/NativescriptDriver");
|
|
|
13
13
|
const SqljsDriver_1 = require("./sqljs/SqljsDriver");
|
|
14
14
|
const MysqlDriver_1 = require("./mysql/MysqlDriver");
|
|
15
15
|
const PostgresDriver_1 = require("./postgres/PostgresDriver");
|
|
16
|
-
const
|
|
16
|
+
const ExpoDriverFactory_1 = require("./expo/ExpoDriverFactory");
|
|
17
17
|
const AuroraMysqlDriver_1 = require("./aurora-mysql/AuroraMysqlDriver");
|
|
18
18
|
const AuroraPostgresDriver_1 = require("./aurora-postgres/AuroraPostgresDriver");
|
|
19
19
|
const SapDriver_1 = require("./sap/SapDriver");
|
|
@@ -59,7 +59,7 @@ class DriverFactory {
|
|
|
59
59
|
case "mongodb":
|
|
60
60
|
return new MongoDriver_1.MongoDriver(connection);
|
|
61
61
|
case "expo":
|
|
62
|
-
return new
|
|
62
|
+
return new ExpoDriverFactory_1.ExpoDriverFactory(connection).create();
|
|
63
63
|
case "aurora-mysql":
|
|
64
64
|
return new AuroraMysqlDriver_1.AuroraMysqlDriver(connection);
|
|
65
65
|
case "aurora-postgres":
|