typeorm 0.3.16-dev.68aa573 → 0.3.16-dev.8795c86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/browser/cli-ts-node-esm.js +4 -2
  2. package/browser/cli-ts-node-esm.js.map +1 -1
  3. package/browser/data-source/DataSource.d.ts +1 -1
  4. package/browser/data-source/DataSource.js.map +1 -1
  5. package/browser/driver/Driver.d.ts +10 -0
  6. package/browser/driver/Driver.js.map +1 -1
  7. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  8. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  9. package/browser/driver/mongodb/MongoDriver.js +2 -1
  10. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  11. package/browser/driver/mysql/MysqlDriver.d.ts +8 -0
  12. package/browser/driver/mysql/MysqlDriver.js +30 -4
  13. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  14. package/browser/driver/oracle/OracleDriver.d.ts +13 -0
  15. package/browser/driver/oracle/OracleDriver.js +15 -0
  16. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  17. package/browser/driver/oracle/OracleQueryRunner.js +4 -2
  18. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  19. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +9 -0
  20. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  21. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  22. package/browser/driver/types/ColumnTypes.js.map +1 -1
  23. package/browser/entity-manager/EntityManager.d.ts +1 -1
  24. package/browser/entity-manager/EntityManager.js.map +1 -1
  25. package/browser/metadata/EntityMetadata.d.ts +10 -1
  26. package/browser/metadata/EntityMetadata.js +33 -7
  27. package/browser/metadata/EntityMetadata.js.map +1 -1
  28. package/browser/metadata-builder/EntityMetadataBuilder.js +15 -0
  29. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  30. package/browser/metadata-builder/EntityMetadataValidator.js +12 -0
  31. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  32. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +4 -0
  33. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  34. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  35. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  36. package/browser/persistence/EntityPersistExecutor.js +3 -11
  37. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  38. package/browser/persistence/SubjectChangedColumnsComputer.js +2 -1
  39. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  40. package/browser/query-builder/RelationIdLoader.d.ts +3 -1
  41. package/browser/query-builder/RelationIdLoader.js +6 -5
  42. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  43. package/browser/query-builder/SelectQueryBuilder.js +20 -6
  44. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  45. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +10 -7
  46. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  47. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  48. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  49. package/browser/util/DateUtils.d.ts +0 -12
  50. package/browser/util/DateUtils.js +16 -20
  51. package/browser/util/DateUtils.js.map +1 -1
  52. package/cli-ts-node-esm.js +4 -2
  53. package/cli-ts-node-esm.js.map +1 -1
  54. package/commands/InitCommand.js +1 -1
  55. package/commands/InitCommand.js.map +1 -1
  56. package/data-source/DataSource.d.ts +1 -1
  57. package/data-source/DataSource.js.map +1 -1
  58. package/driver/Driver.d.ts +10 -0
  59. package/driver/Driver.js.map +1 -1
  60. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  61. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  62. package/driver/mongodb/MongoDriver.js +2 -1
  63. package/driver/mongodb/MongoDriver.js.map +1 -1
  64. package/driver/mysql/MysqlDriver.d.ts +8 -0
  65. package/driver/mysql/MysqlDriver.js +30 -4
  66. package/driver/mysql/MysqlDriver.js.map +1 -1
  67. package/driver/oracle/OracleDriver.d.ts +13 -0
  68. package/driver/oracle/OracleDriver.js +15 -0
  69. package/driver/oracle/OracleDriver.js.map +1 -1
  70. package/driver/oracle/OracleQueryRunner.js +4 -2
  71. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  72. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +9 -0
  73. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  74. package/driver/types/ColumnTypes.d.ts +1 -1
  75. package/driver/types/ColumnTypes.js.map +1 -1
  76. package/entity-manager/EntityManager.d.ts +1 -1
  77. package/entity-manager/EntityManager.js.map +1 -1
  78. package/metadata/EntityMetadata.d.ts +10 -1
  79. package/metadata/EntityMetadata.js +33 -7
  80. package/metadata/EntityMetadata.js.map +1 -1
  81. package/metadata-builder/EntityMetadataBuilder.js +15 -0
  82. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  83. package/metadata-builder/EntityMetadataValidator.js +12 -0
  84. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  85. package/metadata-builder/JunctionEntityMetadataBuilder.js +4 -0
  86. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  87. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  88. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  89. package/package.json +1 -1
  90. package/persistence/EntityPersistExecutor.js +3 -11
  91. package/persistence/EntityPersistExecutor.js.map +1 -1
  92. package/persistence/SubjectChangedColumnsComputer.js +2 -1
  93. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  94. package/query-builder/RelationIdLoader.d.ts +3 -1
  95. package/query-builder/RelationIdLoader.js +6 -5
  96. package/query-builder/RelationIdLoader.js.map +1 -1
  97. package/query-builder/SelectQueryBuilder.js +20 -6
  98. package/query-builder/SelectQueryBuilder.js.map +1 -1
  99. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +10 -7
  100. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  101. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  102. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  103. package/util/DateUtils.d.ts +0 -12
  104. package/util/DateUtils.js +16 -20
  105. package/util/DateUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/mongodb/MongoDriver.ts"],"names":[],"mappings":"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","file":"MongoDriver.js","sourcesContent":["import { Driver } from \"../Driver\"\nimport { ConnectionIsNotSetError } from \"../../error/ConnectionIsNotSetError\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { CteCapabilities } from \"../types/CteCapabilities\"\nimport { MongoQueryRunner } from \"./MongoQueryRunner\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { MongoConnectionOptions } from \"./MongoConnectionOptions\"\nimport { MappedColumnTypes } from \"../types/MappedColumnTypes\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { MongoSchemaBuilder } from \"../../schema-builder/MongoSchemaBuilder\"\nimport { DataTypeDefaults } from \"../types/DataTypeDefaults\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { DataSourceOptions } from \"../../data-source/DataSourceOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { DriverUtils } from \"../DriverUtils\"\nimport { TypeORMError } from \"../../error\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\nimport { UpsertType } from \"../types/UpsertType\"\n\n/**\n * Organizes communication with MongoDB.\n */\nexport class MongoDriver implements Driver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Underlying mongodb library.\n */\n mongodb: any\n\n /**\n * Mongodb does not require to dynamically create query runner each time,\n * because it does not have a regular connection pool as RDBMS systems have.\n */\n queryRunner?: MongoQueryRunner\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: MongoConnectionOptions\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = false\n\n /**\n * Represent transaction support by this driver\n */\n transactionSupport = \"none\" as const\n\n /**\n * Mongodb does not need to have column types because they are not used in schema sync.\n */\n supportedDataTypes: ColumnType[] = []\n\n /**\n * Returns type of upsert supported by driver if any\n */\n supportedUpsertTypes: UpsertType[]\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = []\n\n /**\n * Mongodb does not need to have a strong defined mapped column types because they are not used in schema sync.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"int\",\n createDateDefault: \"\",\n updateDate: \"int\",\n updateDateDefault: \"\",\n deleteDate: \"int\",\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\n migrationName: \"int\",\n migrationTimestamp: \"int\",\n cacheId: \"int\",\n cacheIdentifier: \"int\",\n cacheTime: \"int\",\n cacheDuration: \"int\",\n cacheQuery: \"int\",\n cacheResult: \"int\",\n metadataType: \"int\",\n metadataDatabase: \"int\",\n metadataSchema: \"int\",\n metadataTable: \"int\",\n metadataName: \"int\",\n metadataValue: \"int\",\n }\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for MongoDB.\n */\n maxAliasLength?: number\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Valid mongo connection options\n * NOTE: Keep sync with MongoConnectionOptions\n * Sync with http://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html\n */\n protected validOptionNames: string[] = [\n \"poolSize\",\n \"ssl\",\n \"sslValidate\",\n \"sslCA\",\n \"sslCert\",\n \"sslKey\",\n \"sslPass\",\n \"sslCRL\",\n \"autoReconnect\",\n \"noDelay\",\n \"keepAlive\",\n \"keepAliveInitialDelay\",\n \"connectTimeoutMS\",\n \"family\",\n \"socketTimeoutMS\",\n \"reconnectTries\",\n \"reconnectInterval\",\n \"ha\",\n \"haInterval\",\n \"replicaSet\",\n \"secondaryAcceptableLatencyMS\",\n \"acceptableLatencyMS\",\n \"connectWithNoPrimary\",\n \"authSource\",\n \"w\",\n \"wtimeout\",\n \"j\",\n \"writeConcern\",\n \"forceServerObjectId\",\n \"serializeFunctions\",\n \"ignoreUndefined\",\n \"raw\",\n \"bufferMaxEntries\",\n \"readPreference\",\n \"pkFactory\",\n \"promiseLibrary\",\n \"readConcern\",\n \"maxStalenessSeconds\",\n \"loggerLevel\",\n // Do not overwrite BaseDataSourceOptions.logger\n // \"logger\",\n \"promoteValues\",\n \"promoteBuffers\",\n \"promoteLongs\",\n \"domainsEnabled\",\n \"checkServerIdentity\",\n \"validateOptions\",\n \"appname\",\n // omit auth - we are building url from username and password\n // \"auth\"\n \"authMechanism\",\n \"compression\",\n \"fsync\",\n \"readPreferenceTags\",\n \"numberOfRetries\",\n \"auto_reconnect\",\n \"minSize\",\n \"monitorCommands\",\n \"useNewUrlParser\",\n \"useUnifiedTopology\",\n \"autoEncryption\",\n \"retryWrites\",\n ]\n\n cteCapabilities: CteCapabilities = {\n enabled: false,\n }\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n this.options = connection.options as MongoConnectionOptions\n\n // validate options to make sure everything is correct and driver will be able to establish connection\n this.validateOptions(connection.options)\n\n // load mongodb package\n this.loadDependencies()\n\n this.database = DriverUtils.buildMongoDBDriverOptions(\n this.options,\n ).database\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n const options = DriverUtils.buildMongoDBDriverOptions(this.options)\n\n const client = await this.mongodb.MongoClient.connect(\n this.buildConnectionUrl(options),\n this.buildConnectionOptions(options),\n )\n\n this.queryRunner = new MongoQueryRunner(this.connection, client)\n ObjectUtils.assign(this.queryRunner, {\n manager: this.connection.manager,\n })\n }\n\n afterConnect(): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Closes connection with the database.\n */\n async disconnect(): Promise<void> {\n if (!this.queryRunner) throw new ConnectionIsNotSetError(\"mongodb\")\n // const handler = (err: any) => (err ? fail(err) : ok())\n this.queryRunner.databaseConnection.close()\n this.queryRunner = undefined\n // return ok()\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new MongoSchemaBuilder(this.connection)\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return this.queryRunner!\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(\n sql: string,\n parameters: ObjectLiteral,\n nativeParameters: ObjectLiteral,\n ): [string, any[]] {\n throw new TypeORMError(\n `This operation is not supported by Mongodb driver.`,\n )\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return columnName\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n */\n buildTableName(\n tableName: string,\n schema?: string,\n database?: string,\n ): string {\n return tableName\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): { tableName: string; schema?: string; database?: string } {\n if (InstanceChecker.isEntityMetadata(target)) {\n return {\n tableName: target.tableName,\n }\n }\n\n if (InstanceChecker.isTable(target) || InstanceChecker.isView(target)) {\n return {\n tableName: target.name,\n }\n }\n\n if (InstanceChecker.isTableForeignKey(target)) {\n return {\n tableName: target.referencedTableName,\n }\n }\n\n return {\n tableName: target,\n }\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(\n columnMetadata.transformer,\n value,\n )\n return value\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n return value\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Calculates column length taking into account the default length values.\n */\n getColumnLength(column: ColumnMetadata): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n createFullType(column: TableColumn): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return Promise.resolve()\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n return Promise.resolve()\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertedId: any) {\n return metadata.objectIdColumn!.createValueMap(insertedId)\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(\n tableColumns: TableColumn[],\n columnMetadatas: ColumnMetadata[],\n ): ColumnMetadata[] {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"\"\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Validate driver options to make sure everything is correct and driver will be able to establish connection.\n */\n protected validateOptions(options: DataSourceOptions) {\n // todo: fix\n // if (!options.url) {\n // if (!options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // }\n }\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): any {\n try {\n const mongodb = this.options.driver || PlatformTools.load(\"mongodb\")\n this.mongodb = mongodb\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"MongoDB\", \"mongodb\")\n }\n }\n\n /**\n * Builds connection url that is passed to underlying driver to perform connection to the mongodb database.\n */\n protected buildConnectionUrl(options: { [key: string]: any }): string {\n const schemaUrlPart = options.type.toLowerCase()\n const credentialsUrlPart =\n options.username && options.password\n ? `${options.username}:${options.password}@`\n : \"\"\n\n const portUrlPart =\n schemaUrlPart === \"mongodb+srv\" ? \"\" : `:${options.port || \"27017\"}`\n\n let connectionString: string\n if (options.replicaSet) {\n connectionString = `${schemaUrlPart}://${credentialsUrlPart}${\n options.hostReplicaSet ||\n options.host + portUrlPart ||\n \"127.0.0.1\" + portUrlPart\n }/${options.database || \"\"}?replicaSet=${options.replicaSet}${\n options.tls ? \"&tls=true\" : \"\"\n }`\n } else {\n connectionString = `${schemaUrlPart}://${credentialsUrlPart}${\n options.host || \"127.0.0.1\"\n }${portUrlPart}/${options.database || \"\"}${\n options.tls ? \"?tls=true\" : \"\"\n }`\n }\n\n return connectionString\n }\n\n /**\n * Build connection options from MongoConnectionOptions\n */\n protected buildConnectionOptions(options: { [key: string]: any }): any {\n const mongoOptions: any = {}\n\n for (let index = 0; index < this.validOptionNames.length; index++) {\n const optionName = this.validOptionNames[index]\n\n if (options.extra && optionName in options.extra) {\n mongoOptions[optionName] = options.extra[optionName]\n } else if (optionName in options) {\n mongoOptions[optionName] = options[optionName]\n }\n }\n\n return mongoOptions\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/mongodb/MongoDriver.ts"],"names":[],"mappings":"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","file":"MongoDriver.js","sourcesContent":["import { Driver } from \"../Driver\"\nimport { ConnectionIsNotSetError } from \"../../error/ConnectionIsNotSetError\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { CteCapabilities } from \"../types/CteCapabilities\"\nimport { MongoQueryRunner } from \"./MongoQueryRunner\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { MongoConnectionOptions } from \"./MongoConnectionOptions\"\nimport { MappedColumnTypes } from \"../types/MappedColumnTypes\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { MongoSchemaBuilder } from \"../../schema-builder/MongoSchemaBuilder\"\nimport { DataTypeDefaults } from \"../types/DataTypeDefaults\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { DataSourceOptions } from \"../../data-source/DataSourceOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { DriverUtils } from \"../DriverUtils\"\nimport { TypeORMError } from \"../../error\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\nimport { UpsertType } from \"../types/UpsertType\"\n\n/**\n * Organizes communication with MongoDB.\n */\nexport class MongoDriver implements Driver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Underlying mongodb library.\n */\n mongodb: any\n\n /**\n * Mongodb does not require to dynamically create query runner each time,\n * because it does not have a regular connection pool as RDBMS systems have.\n */\n queryRunner?: MongoQueryRunner\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: MongoConnectionOptions\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = false\n\n /**\n * Represent transaction support by this driver\n */\n transactionSupport = \"none\" as const\n\n /**\n * Mongodb does not need to have column types because they are not used in schema sync.\n */\n supportedDataTypes: ColumnType[] = []\n\n /**\n * Returns type of upsert supported by driver if any\n */\n supportedUpsertTypes: UpsertType[]\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = []\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = []\n\n /**\n * Mongodb does not need to have a strong defined mapped column types because they are not used in schema sync.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"int\",\n createDateDefault: \"\",\n updateDate: \"int\",\n updateDateDefault: \"\",\n deleteDate: \"int\",\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\n migrationName: \"int\",\n migrationTimestamp: \"int\",\n cacheId: \"int\",\n cacheIdentifier: \"int\",\n cacheTime: \"int\",\n cacheDuration: \"int\",\n cacheQuery: \"int\",\n cacheResult: \"int\",\n metadataType: \"int\",\n metadataDatabase: \"int\",\n metadataSchema: \"int\",\n metadataTable: \"int\",\n metadataName: \"int\",\n metadataValue: \"int\",\n }\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for MongoDB.\n */\n maxAliasLength?: number\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Valid mongo connection options\n * NOTE: Keep sync with MongoConnectionOptions\n * Sync with http://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html\n */\n protected validOptionNames: string[] = [\n \"poolSize\",\n \"ssl\",\n \"sslValidate\",\n \"sslCA\",\n \"sslCert\",\n \"sslKey\",\n \"sslPass\",\n \"sslCRL\",\n \"autoReconnect\",\n \"noDelay\",\n \"keepAlive\",\n \"keepAliveInitialDelay\",\n \"connectTimeoutMS\",\n \"family\",\n \"socketTimeoutMS\",\n \"reconnectTries\",\n \"reconnectInterval\",\n \"ha\",\n \"haInterval\",\n \"replicaSet\",\n \"secondaryAcceptableLatencyMS\",\n \"acceptableLatencyMS\",\n \"connectWithNoPrimary\",\n \"authSource\",\n \"w\",\n \"wtimeout\",\n \"j\",\n \"writeConcern\",\n \"forceServerObjectId\",\n \"serializeFunctions\",\n \"ignoreUndefined\",\n \"raw\",\n \"bufferMaxEntries\",\n \"readPreference\",\n \"pkFactory\",\n \"promiseLibrary\",\n \"readConcern\",\n \"maxStalenessSeconds\",\n \"loggerLevel\",\n // Do not overwrite BaseDataSourceOptions.logger\n // \"logger\",\n \"promoteValues\",\n \"promoteBuffers\",\n \"promoteLongs\",\n \"domainsEnabled\",\n \"checkServerIdentity\",\n \"validateOptions\",\n \"appname\",\n // omit auth - we are building url from username and password\n // \"auth\"\n \"authMechanism\",\n \"compression\",\n \"fsync\",\n \"readPreferenceTags\",\n \"numberOfRetries\",\n \"auto_reconnect\",\n \"minSize\",\n \"monitorCommands\",\n \"useNewUrlParser\",\n \"useUnifiedTopology\",\n \"autoEncryption\",\n \"retryWrites\",\n \"directConnection\",\n ]\n\n cteCapabilities: CteCapabilities = {\n enabled: false,\n }\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n this.options = connection.options as MongoConnectionOptions\n\n // validate options to make sure everything is correct and driver will be able to establish connection\n this.validateOptions(connection.options)\n\n // load mongodb package\n this.loadDependencies()\n\n this.database = DriverUtils.buildMongoDBDriverOptions(\n this.options,\n ).database\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n const options = DriverUtils.buildMongoDBDriverOptions(this.options)\n\n const client = await this.mongodb.MongoClient.connect(\n this.buildConnectionUrl(options),\n this.buildConnectionOptions(options),\n )\n\n this.queryRunner = new MongoQueryRunner(this.connection, client)\n ObjectUtils.assign(this.queryRunner, {\n manager: this.connection.manager,\n })\n }\n\n afterConnect(): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Closes connection with the database.\n */\n async disconnect(): Promise<void> {\n if (!this.queryRunner) throw new ConnectionIsNotSetError(\"mongodb\")\n // const handler = (err: any) => (err ? fail(err) : ok())\n this.queryRunner.databaseConnection.close()\n this.queryRunner = undefined\n // return ok()\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new MongoSchemaBuilder(this.connection)\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return this.queryRunner!\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(\n sql: string,\n parameters: ObjectLiteral,\n nativeParameters: ObjectLiteral,\n ): [string, any[]] {\n throw new TypeORMError(\n `This operation is not supported by Mongodb driver.`,\n )\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return columnName\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n */\n buildTableName(\n tableName: string,\n schema?: string,\n database?: string,\n ): string {\n return tableName\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): { tableName: string; schema?: string; database?: string } {\n if (InstanceChecker.isEntityMetadata(target)) {\n return {\n tableName: target.tableName,\n }\n }\n\n if (InstanceChecker.isTable(target) || InstanceChecker.isView(target)) {\n return {\n tableName: target.name,\n }\n }\n\n if (InstanceChecker.isTableForeignKey(target)) {\n return {\n tableName: target.referencedTableName,\n }\n }\n\n return {\n tableName: target,\n }\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(\n columnMetadata.transformer,\n value,\n )\n return value\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n return value\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Calculates column length taking into account the default length values.\n */\n getColumnLength(column: ColumnMetadata): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n createFullType(column: TableColumn): string {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return Promise.resolve()\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n return Promise.resolve()\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertedId: any) {\n return metadata.objectIdColumn!.createValueMap(insertedId)\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(\n tableColumns: TableColumn[],\n columnMetadatas: ColumnMetadata[],\n ): ColumnMetadata[] {\n throw new TypeORMError(\n `MongoDB is schema-less, not supported by this driver.`,\n )\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"\"\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Validate driver options to make sure everything is correct and driver will be able to establish connection.\n */\n protected validateOptions(options: DataSourceOptions) {\n // todo: fix\n // if (!options.url) {\n // if (!options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // }\n }\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): any {\n try {\n const mongodb = this.options.driver || PlatformTools.load(\"mongodb\")\n this.mongodb = mongodb\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"MongoDB\", \"mongodb\")\n }\n }\n\n /**\n * Builds connection url that is passed to underlying driver to perform connection to the mongodb database.\n */\n protected buildConnectionUrl(options: { [key: string]: any }): string {\n const schemaUrlPart = options.type.toLowerCase()\n const credentialsUrlPart =\n options.username && options.password\n ? `${encodeURIComponent(options.username)}:${encodeURIComponent(\n options.password,\n )}@`\n : \"\"\n\n const portUrlPart =\n schemaUrlPart === \"mongodb+srv\" ? \"\" : `:${options.port || \"27017\"}`\n\n let connectionString: string\n if (options.replicaSet) {\n connectionString = `${schemaUrlPart}://${credentialsUrlPart}${\n options.hostReplicaSet ||\n options.host + portUrlPart ||\n \"127.0.0.1\" + portUrlPart\n }/${options.database || \"\"}?replicaSet=${options.replicaSet}${\n options.tls ? \"&tls=true\" : \"\"\n }`\n } else {\n connectionString = `${schemaUrlPart}://${credentialsUrlPart}${\n options.host || \"127.0.0.1\"\n }${portUrlPart}/${options.database || \"\"}${\n options.tls ? \"?tls=true\" : \"\"\n }`\n }\n\n return connectionString\n }\n\n /**\n * Build connection options from MongoConnectionOptions\n */\n protected buildConnectionOptions(options: { [key: string]: any }): any {\n const mongoOptions: any = {}\n\n for (let index = 0; index < this.validOptionNames.length; index++) {\n const optionName = this.validOptionNames[index]\n\n if (options.extra && optionName in options.extra) {\n mongoOptions[optionName] = options.extra[optionName]\n } else if (optionName in options) {\n mongoOptions[optionName] = options[optionName]\n }\n }\n\n return mongoOptions\n }\n}\n"],"sourceRoot":"../.."}
@@ -117,6 +117,8 @@ export declare class MysqlDriver implements Driver {
117
117
  * Supported returning types
118
118
  */
119
119
  private readonly _isReturningSqlSupported;
120
+ /** MariaDB supports uuid type for version 10.7.0 and up */
121
+ private uuidColumnTypeSuported;
120
122
  constructor(connection: DataSource);
121
123
  /**
122
124
  * Performs connection to the database.
@@ -260,4 +262,10 @@ export declare class MysqlDriver implements Driver {
260
262
  * Escapes a given comment.
261
263
  */
262
264
  protected escapeComment(comment?: string): string | undefined;
265
+ /**
266
+ * A helper to check if column data types have changed
267
+ * This can be used to manage checking any types the
268
+ * database may alias
269
+ */
270
+ private isColumnDataTypeChanged;
263
271
  }
@@ -94,6 +94,10 @@ class MysqlDriver {
94
94
  "multilinestring",
95
95
  "multipolygon",
96
96
  "geometrycollection",
97
+ // additional data types for mariadb
98
+ "uuid",
99
+ "inet4",
100
+ "inet6",
97
101
  ];
98
102
  /**
99
103
  * Returns type of upsert supported by driver if any
@@ -259,6 +263,8 @@ class MysqlDriver {
259
263
  insert: false,
260
264
  update: false,
261
265
  };
266
+ /** MariaDB supports uuid type for version 10.7.0 and up */
267
+ this.uuidColumnTypeSuported = false;
262
268
  this.connection = connection;
263
269
  this.options = {
264
270
  legacySpatialSupport: true,
@@ -318,6 +324,9 @@ class MysqlDriver {
318
324
  if (VersionUtils_1.VersionUtils.isGreaterOrEqual(dbVersion, "10.2.0")) {
319
325
  this.cteCapabilities.enabled = true;
320
326
  }
327
+ if (VersionUtils_1.VersionUtils.isGreaterOrEqual(dbVersion, "10.7.0")) {
328
+ this.uuidColumnTypeSuported = true;
329
+ }
321
330
  }
322
331
  else if (this.options.type === "mysql") {
323
332
  if (VersionUtils_1.VersionUtils.isGreaterOrEqual(dbVersion, "8.0.0")) {
@@ -550,6 +559,7 @@ class MysqlDriver {
550
559
  * Creates a database type from a given column metadata.
551
560
  */
552
561
  normalizeType(column) {
562
+ var _a;
553
563
  if (column.type === Number || column.type === "integer") {
554
564
  return "int";
555
565
  }
@@ -565,15 +575,18 @@ class MysqlDriver {
565
575
  else if (column.type === Boolean) {
566
576
  return "tinyint";
567
577
  }
568
- else if (column.type === "uuid") {
578
+ else if (column.type === "uuid" && !this.uuidColumnTypeSuported) {
569
579
  return "varchar";
570
580
  }
571
- else if (column.type === "json" && this.options.type === "mariadb") {
581
+ else if (column.type === "json" &&
582
+ this.options.type === "mariadb" &&
583
+ !VersionUtils_1.VersionUtils.isGreaterOrEqual((_a = this.version) !== null && _a !== void 0 ? _a : "0.0.0", "10.4.3")) {
572
584
  /*
573
585
  * MariaDB implements this as a LONGTEXT rather, as the JSON data type contradicts the SQL standard,
574
586
  * and MariaDB's benchmarks indicate that performance is at least equivalent.
575
587
  *
576
588
  * @see https://mariadb.com/kb/en/json-data-type/
589
+ * if Version is 10.4.3 or greater, JSON is an alias for longtext and an automatic check_json(column) constraint is added
577
590
  */
578
591
  return "longtext";
579
592
  }
@@ -655,8 +668,9 @@ class MysqlDriver {
655
668
  return column.length.toString();
656
669
  /**
657
670
  * fix https://github.com/typeorm/typeorm/issues/1139
671
+ * note that if the db did support uuid column type it wouldn't have been defaulted to varchar
658
672
  */
659
- if (column.generationStrategy === "uuid")
673
+ if (column.generationStrategy === "uuid" && column.type === "varchar")
660
674
  return "36";
661
675
  switch (column.type) {
662
676
  case String:
@@ -776,7 +790,7 @@ class MysqlDriver {
776
790
  if (!tableColumn)
777
791
  return false; // we don't need new columns, we only need exist and changed
778
792
  const isColumnChanged = tableColumn.name !== columnMetadata.databaseName ||
779
- tableColumn.type !== this.normalizeType(columnMetadata) ||
793
+ this.isColumnDataTypeChanged(tableColumn, columnMetadata) ||
780
794
  tableColumn.length !== this.getColumnLength(columnMetadata) ||
781
795
  tableColumn.width !== columnMetadata.width ||
782
796
  (columnMetadata.precision !== undefined &&
@@ -1076,6 +1090,18 @@ class MysqlDriver {
1076
1090
  comment = comment.replace(/\u0000/g, ""); // Null bytes aren't allowed in comments
1077
1091
  return comment;
1078
1092
  }
1093
+ /**
1094
+ * A helper to check if column data types have changed
1095
+ * This can be used to manage checking any types the
1096
+ * database may alias
1097
+ */
1098
+ isColumnDataTypeChanged(tableColumn, columnMetadata) {
1099
+ // this is an exception for mariadb versions where json is an alias for longtext
1100
+ if (this.normalizeType(columnMetadata) === "json" &&
1101
+ tableColumn.type.toLowerCase() === "longtext")
1102
+ return false;
1103
+ return tableColumn.type !== this.normalizeType(columnMetadata);
1104
+ }
1079
1105
  }
1080
1106
  exports.MysqlDriver = MysqlDriver;
1081
1107