{"version":3,"sources":["../browser/src/driver/sqlserver/SqlServerDriver.ts"],"names":[],"mappings":"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","file":"SqlServerDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ConnectionIsNotSetError} from \"../../error/ConnectionIsNotSetError\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {SqlServerQueryRunner} from \"./SqlServerQueryRunner\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {SqlServerConnectionOptions} from \"./SqlServerConnectionOptions\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {MssqlParameter} from \"./MssqlParameter\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {SqlServerConnectionCredentialsOptions} from \"./SqlServerConnectionCredentialsOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\n\n/**\n * Organizes communication with SQL Server DBMS.\n */\nexport class SqlServerDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by driver.\n */\n connection: Connection;\n\n /**\n * SQL Server library.\n */\n mssql: any;\n\n /**\n * Pool for master database.\n */\n master: any;\n\n /**\n * Pool for slave databases.\n * Used in replication.\n */\n slaves: any[] = [];\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: SqlServerConnectionOptions;\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 = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql\n */\n supportedDataTypes: ColumnType[] = [\n \"int\",\n \"bigint\",\n \"bit\",\n \"decimal\",\n \"money\",\n \"numeric\",\n \"smallint\",\n \"smallmoney\",\n \"tinyint\",\n \"float\",\n \"real\",\n \"date\",\n \"datetime2\",\n \"datetime\",\n \"datetimeoffset\",\n \"smalldatetime\",\n \"time\",\n \"char\",\n \"varchar\",\n \"text\",\n \"nchar\",\n \"nvarchar\",\n \"ntext\",\n \"binary\",\n \"image\",\n \"varbinary\",\n \"hierarchyid\",\n \"sql_variant\",\n \"timestamp\",\n \"uniqueidentifier\",\n \"xml\",\n \"geometry\",\n \"geography\",\n \"rowversion\"\n ];\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [\n \"geometry\",\n \"geography\"\n ];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"char\",\n \"varchar\",\n \"nchar\",\n \"nvarchar\",\n \"binary\",\n \"varbinary\"\n ];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"decimal\",\n \"numeric\",\n \"time\",\n \"datetime2\",\n \"datetimeoffset\"\n ];\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"decimal\",\n \"numeric\"\n ];\n\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime2\",\n createDateDefault: \"getdate()\",\n updateDate: \"datetime2\",\n updateDateDefault: \"getdate()\",\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"nvarchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"nvarchar(MAX)\" as any,\n cacheResult: \"nvarchar(MAX)\" as any,\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"nvarchar(MAX)\" as any,\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 \"char\": { length: 1 },\n \"nchar\": { length: 1 },\n \"varchar\": { length: 255 },\n \"nvarchar\": { length: 255 },\n \"binary\": { length: 1 },\n \"varbinary\": { length: 1 },\n \"decimal\": { precision: 18, scale: 0 },\n \"numeric\": { precision: 18, scale: 0 },\n \"time\": { precision: 7 },\n \"datetime2\": { precision: 7 },\n \"datetimeoffset\": { precision: 7 }\n };\n\n /**\n * Max length allowed by MSSQL Server for aliases (identifiers).\n * @see https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server\n */\n maxAliasLength = 128;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as SqlServerConnectionOptions;\n this.isReplicated = this.options.replication ? true : false;\n\n // load mssql package\n this.loadDependencies();\n\n // Object.assign(connection.options, DriverUtils.buildDriverOptions(connection.options)); // todo: do it better way\n // validate options to make sure everything is set\n // if (!this.options.host)\n // throw new DriverOptionNotSetError(\"host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n * Based on pooling options, it can either create connection immediately,\n * either create a pool and create connection when needed.\n */\n async connect(): Promise<void> {\n\n if (this.options.replication) {\n this.slaves = await Promise.all(this.options.replication.slaves.map(slave => {\n return this.createPool(this.options, slave);\n }));\n this.master = await this.createPool(this.options, this.options.replication.master);\n this.database = this.options.replication.master.database;\n\n } else {\n this.master = await this.createPool(this.options, this.options);\n this.database = this.options.database;\n }\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\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.master)\n return Promise.reject(new ConnectionIsNotSetError(\"mssql\"));\n\n await this.closePool(this.master);\n await Promise.all(this.slaves.map(slave => this.closePool(slave)));\n this.master = undefined;\n this.slaves = [];\n }\n\n\n /**\n * Closes connection pool.\n */\n protected async closePool(pool: any): Promise<void> {\n return new Promise<void>((ok, fail) => {\n pool.close((err: any) => err ? fail(err) : ok());\n });\n }\n\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: \"master\"|\"slave\" = \"master\") {\n return new SqlServerQueryRunner(this, mode);\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(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters];\n\n const keys = Object.keys(parameters).map(parameter => \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\").join(\"|\");\n sql = sql.replace(new RegExp(keys, \"g\"), (key: string) => {\n let value: any;\n let isArray = false;\n if (key.substr(0, 4) === \":...\") {\n isArray = true;\n value = parameters[key.substr(4)];\n } else {\n value = parameters[key.substr(1)];\n }\n\n if (isArray) {\n return value.map((v: any) => {\n escapedParameters.push(v);\n return \"@\" + (escapedParameters.length - 1);\n }).join(\", \");\n\n } else if (value instanceof Function) {\n return value();\n\n } else {\n escapedParameters.push(value);\n return \"@\" + (escapedParameters.length - 1);\n }\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, escapedParameters];\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(tableName: string, schema?: string, database?: string): string {\n let fullName = tableName;\n if (schema)\n fullName = schema + \".\" + tableName;\n if (database) {\n if (!schema) {\n fullName = database + \"..\" + tableName;\n } else {\n fullName = database + \".\" + fullName;\n }\n }\n\n return fullName;\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(columnMetadata.transformer, value);\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDate(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedTimeToDate(value);\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === \"smalldatetime\"\n || columnMetadata.type === Date) {\n return DateUtils.mixedDateToDate(value, false, false);\n\n } else if (columnMetadata.type === \"datetime2\"\n || columnMetadata.type === \"datetimeoffset\") {\n return DateUtils.mixedDateToDate(value, false, true);\n\n } else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n\n } else if (columnMetadata.type === \"simple-enum\") {\n return DateUtils.simpleEnumToString(value);\n\n }\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 (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n if (columnMetadata.type === Boolean) {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === Date\n || columnMetadata.type === \"datetime2\"\n || columnMetadata.type === \"smalldatetime\"\n || columnMetadata.type === \"datetimeoffset\") {\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n } else if (columnMetadata.type === \"simple-enum\") {\n value = DateUtils.stringToSimpleEnum(value, columnMetadata);\n\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number }): string {\n if (column.type === Number || column.type === \"integer\") {\n return \"int\";\n\n } else if (column.type === String) {\n return \"nvarchar\";\n\n } else if (column.type === Date) {\n return \"datetime\";\n\n } else if (column.type === Boolean) {\n return \"bit\";\n\n } else if ((column.type as any) === Buffer) {\n return \"binary\";\n\n } else if (column.type === \"uuid\") {\n return \"uniqueidentifier\";\n\n } else if (column.type === \"simple-array\" || column.type === \"simple-json\") {\n return \"ntext\";\n\n } else if (column.type === \"simple-enum\") {\n return \"nvarchar\";\n\n } else if (column.type === \"dec\") {\n return \"decimal\";\n\n } else if (column.type === \"double precision\") {\n return \"float\";\n\n } else if (column.type === \"rowversion\") {\n return \"timestamp\"; // the rowversion type's name in SQL server metadata is timestamp\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string {\n const defaultValue = columnMetadata.default;\n\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n\n } else if (typeof defaultValue === \"boolean\") {\n return defaultValue === true ? \"1\" : \"0\";\n\n } else if (typeof defaultValue === \"function\") {\n return /*\"(\" + */defaultValue()/* + \")\"*/;\n\n } else if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'`;\n\n } else {\n return defaultValue;\n }\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.uniques.some(uq => uq.columns.length === 1 && uq.columns[0] === column);\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata|TableColumn): string {\n if (column.length)\n return column.length.toString();\n\n if (column.type === \"varchar\" || column.type === \"nvarchar\" || column.type === String)\n return \"255\";\n\n return \"\";\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n\n // used 'getColumnLength()' method, because SqlServer sets `varchar` and `nvarchar` length to 1 by default.\n if (this.getColumnLength(column)) {\n type += `(${this.getColumnLength(column)})`;\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += `(${column.precision},${column.scale})`;\n\n } else if (column.precision !== null && column.precision !== undefined) {\n type += `(${column.precision})`;\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\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(this.master);\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 if (!this.slaves.length)\n return this.obtainMasterConnection();\n\n const random = Math.floor(Math.random() * this.slaves.length);\n return Promise.resolve(this.slaves[random]);\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: ObjectLiteral) {\n if (!insertResult)\n return undefined;\n\n return Object.keys(insertResult).reduce((map, key) => {\n const column = metadata.findColumnWithDatabaseName(key);\n if (column) {\n OrmUtils.mergeDeep(map, column.createValueMap(this.prepareHydratedValue(insertResult[key], column)));\n }\n return map;\n }, {} as ObjectLiteral);\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(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment || // todo\n || (!tableColumn.isGenerated && this.lowerDefaultValueIfNessesary(this.normalizeDefault(columnMetadata)) !== this.lowerDefaultValueIfNessesary(tableColumn.default)) // we included check for generated here, because generated columns already can have default values\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || tableColumn.isGenerated !== columnMetadata.isGenerated;\n });\n }\n private lowerDefaultValueIfNessesary(value: string | undefined) {\n // SqlServer saves function calls in default value as lowercase #2733\n if (!value) {\n return value;\n }\n return value.split(`'`).map((v, i) => {\n return i % 2 === 1 ? v : v.toLowerCase();\n }).join(`'`);\n }\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n if (this.options.options && this.options.options.disableOutputReturning) {\n return false;\n }\n return true;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return true;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"@\" + index;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sql server's parameters needs to be wrapped into special object with type information about this value.\n * This method wraps given value into MssqlParameter based on its column definition.\n */\n parametrizeValue(column: ColumnMetadata, value: any) {\n\n // if its already MssqlParameter then simply return it\n if (value instanceof MssqlParameter)\n return value;\n\n const normalizedType = this.normalizeType({ type: column.type });\n if (column.length) {\n return new MssqlParameter(value, normalizedType as any, column.length as any);\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n return new MssqlParameter(value, normalizedType as any, column.precision, column.scale);\n\n } else if (column.precision !== null && column.precision !== undefined) {\n return new MssqlParameter(value, normalizedType as any, column.precision);\n\n } else if (column.scale !== null && column.scale !== undefined) {\n return new MssqlParameter(value, normalizedType as any, column.scale);\n }\n\n return new MssqlParameter(value, normalizedType as any);\n }\n\n /**\n * Sql server's parameters needs to be wrapped into special object with type information about this value.\n * This method wraps all values of the given object into MssqlParameter based on their column definitions in the given table.\n */\n parametrizeMap(tablePath: string, map: ObjectLiteral): ObjectLiteral {\n\n // find metadata for the given table\n if (!this.connection.hasMetadata(tablePath)) // if no metadata found then we can't proceed because we don't have columns and their types\n return map;\n const metadata = this.connection.getMetadata(tablePath);\n\n return Object.keys(map).reduce((newMap, key) => {\n const value = map[key];\n\n // find column metadata\n const column = metadata.findColumnWithDatabaseName(key);\n if (!column) // if we didn't find a column then we can't proceed because we don't have a column type\n return value;\n\n newMap[key] = this.parametrizeValue(column, value);\n return newMap;\n }, {} as ObjectLiteral);\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n this.mssql = PlatformTools.load(\"mssql\");\n\n } catch (e) { // todo: better error for browser env\n throw new DriverPackageNotInstalledError(\"SQL Server\", \"mssql\");\n }\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected createPool(options: SqlServerConnectionOptions, credentials: SqlServerConnectionCredentialsOptions): Promise<any> {\n\n credentials = Object.assign(credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n // build connection options for the driver\n const connectionOptions = Object.assign({}, {\n connectionTimeout: this.options.connectionTimeout,\n requestTimeout: this.options.requestTimeout,\n stream: this.options.stream,\n pool: this.options.pool,\n options: this.options.options,\n }, {\n server: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n domain: credentials.domain,\n }, options.extra || {});\n\n // set default useUTC option if it hasn't been set\n if (!connectionOptions.options) connectionOptions.options = { useUTC: false };\n else if (!connectionOptions.options.useUTC) connectionOptions.options.useUTC = false;\n\n // pooling is enabled either when its set explicitly to true,\n // either when its not defined at all (e.g. enabled by default)\n return new Promise<void>((ok, fail) => {\n const pool = new this.mssql.ConnectionPool(connectionOptions);\n\n const { logger } = this.connection;\n /*\n Attaching an error handler to pool errors is essential, as, otherwise, errors raised will go unhandled and\n cause the hosting app to crash.\n */\n pool.on(\"error\", (error: any) => logger.log(\"warn\", `MSSQL pool raised an error. ${error}`));\n\n const connection = pool.connect((err: any) => {\n if (err) return fail(err);\n ok(connection);\n });\n });\n }\n\n}\n"],"sourceRoot":"../.."}
|