typeorm 0.3.27-dev.fa3cd43 → 0.3.28-dev.797a8f5

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 (98) hide show
  1. package/browser/data-source/BaseDataSourceOptions.d.ts +18 -0
  2. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  3. package/browser/decorator/columns/Column.d.ts +7 -7
  4. package/browser/decorator/columns/Column.js +1 -1
  5. package/browser/decorator/columns/Column.js.map +1 -1
  6. package/browser/decorator/options/ColumnNumericOptions.d.ts +8 -1
  7. package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
  8. package/browser/decorator/options/ColumnOptions.d.ts +6 -0
  9. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  10. package/browser/decorator/options/ColumnUnsignedOptions.d.ts +28 -0
  11. package/browser/decorator/options/ColumnUnsignedOptions.js +3 -0
  12. package/browser/decorator/options/ColumnUnsignedOptions.js.map +1 -0
  13. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +3 -0
  14. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  15. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +15 -19
  16. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +7 -27
  17. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  18. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +7 -7
  19. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +15 -13
  20. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  21. package/browser/driver/mysql/MysqlDriver.d.ts +23 -19
  22. package/browser/driver/mysql/MysqlDriver.js +63 -29
  23. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  24. package/browser/driver/mysql/MysqlQueryRunner.d.ts +1 -0
  25. package/browser/driver/mysql/MysqlQueryRunner.js +12 -6
  26. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  27. package/browser/driver/postgres/PostgresDriver.d.ts +1 -0
  28. package/browser/driver/postgres/PostgresDriver.js +40 -1
  29. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  30. package/browser/driver/postgres/PostgresQueryRunner.js +7 -0
  31. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  32. package/browser/driver/sap/SapDriver.js +6 -0
  33. package/browser/driver/sap/SapDriver.js.map +1 -1
  34. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +0 -5
  35. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  36. package/browser/driver/spanner/SpannerDriver.d.ts +0 -4
  37. package/browser/driver/spanner/SpannerDriver.js +0 -4
  38. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  39. package/browser/driver/types/ColumnTypes.d.ts +3 -3
  40. package/browser/driver/types/ColumnTypes.js.map +1 -1
  41. package/browser/metadata-builder/EntityMetadataBuilder.js +1 -8
  42. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  43. package/browser/query-builder/QueryBuilder.js +26 -12
  44. package/browser/query-builder/QueryBuilder.js.map +1 -1
  45. package/browser/query-builder/SelectQueryBuilder.js +42 -35
  46. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  47. package/data-source/BaseDataSourceOptions.d.ts +18 -0
  48. package/data-source/BaseDataSourceOptions.js.map +1 -1
  49. package/decorator/columns/Column.d.ts +7 -7
  50. package/decorator/columns/Column.js +1 -1
  51. package/decorator/columns/Column.js.map +1 -1
  52. package/decorator/options/ColumnNumericOptions.d.ts +8 -1
  53. package/decorator/options/ColumnNumericOptions.js.map +1 -1
  54. package/decorator/options/ColumnOptions.d.ts +6 -0
  55. package/decorator/options/ColumnOptions.js.map +1 -1
  56. package/decorator/options/ColumnUnsignedOptions.d.ts +28 -0
  57. package/decorator/options/{ColumnWithWidthOptions.js → ColumnUnsignedOptions.js} +1 -1
  58. package/decorator/options/ColumnUnsignedOptions.js.map +1 -0
  59. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +3 -0
  60. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  61. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +15 -19
  62. package/driver/aurora-mysql/AuroraMysqlDriver.js +7 -27
  63. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  64. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +7 -7
  65. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +15 -13
  66. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  67. package/driver/mysql/MysqlDriver.d.ts +23 -19
  68. package/driver/mysql/MysqlDriver.js +63 -29
  69. package/driver/mysql/MysqlDriver.js.map +1 -1
  70. package/driver/mysql/MysqlQueryRunner.d.ts +1 -0
  71. package/driver/mysql/MysqlQueryRunner.js +12 -6
  72. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  73. package/driver/postgres/PostgresDriver.d.ts +1 -0
  74. package/driver/postgres/PostgresDriver.js +40 -1
  75. package/driver/postgres/PostgresDriver.js.map +1 -1
  76. package/driver/postgres/PostgresQueryRunner.js +7 -0
  77. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  78. package/driver/sap/SapDriver.js +6 -0
  79. package/driver/sap/SapDriver.js.map +1 -1
  80. package/driver/spanner/SpannerConnectionOptions.d.ts +0 -5
  81. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  82. package/driver/spanner/SpannerDriver.d.ts +0 -4
  83. package/driver/spanner/SpannerDriver.js +0 -4
  84. package/driver/spanner/SpannerDriver.js.map +1 -1
  85. package/driver/types/ColumnTypes.d.ts +3 -3
  86. package/driver/types/ColumnTypes.js.map +1 -1
  87. package/metadata-builder/EntityMetadataBuilder.js +1 -8
  88. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  89. package/package.json +1 -1
  90. package/query-builder/QueryBuilder.js +26 -12
  91. package/query-builder/QueryBuilder.js.map +1 -1
  92. package/query-builder/SelectQueryBuilder.js +42 -35
  93. package/query-builder/SelectQueryBuilder.js.map +1 -1
  94. package/browser/decorator/options/ColumnWithWidthOptions.d.ts +0 -19
  95. package/browser/decorator/options/ColumnWithWidthOptions.js +0 -3
  96. package/browser/decorator/options/ColumnWithWidthOptions.js.map +0 -1
  97. package/decorator/options/ColumnWithWidthOptions.d.ts +0 -19
  98. package/decorator/options/ColumnWithWidthOptions.js.map +0 -1
@@ -2504,22 +2504,47 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
2504
2504
  else {
2505
2505
  const andConditions = [];
2506
2506
  for (const key in where) {
2507
- if (where[key] === undefined || where[key] === null)
2508
- continue;
2507
+ let parameterValue = where[key];
2509
2508
  const propertyPath = embedPrefix ? embedPrefix + "." + key : key;
2510
2509
  const column = metadata.findColumnWithPropertyPathStrict(propertyPath);
2511
2510
  const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
2512
2511
  const relation = metadata.findRelationWithPropertyPath(propertyPath);
2513
- if (!embed && !column && !relation)
2512
+ if (!embed && !column && !relation) {
2514
2513
  throw new EntityPropertyNotFoundError_1.EntityPropertyNotFoundError(propertyPath, metadata);
2514
+ }
2515
+ if (parameterValue === undefined) {
2516
+ const undefinedBehavior = this.connection.options.invalidWhereValuesBehavior
2517
+ ?.undefined || "ignore";
2518
+ if (undefinedBehavior === "throw") {
2519
+ throw new error_1.TypeORMError(`Undefined value encountered in property '${alias}.${key}' of a where condition. ` +
2520
+ `Set 'invalidWhereValuesBehavior.undefined' to 'ignore' in connection options to skip properties with undefined values.`);
2521
+ }
2522
+ continue;
2523
+ }
2524
+ if (parameterValue === null) {
2525
+ const nullBehavior = this.connection.options.invalidWhereValuesBehavior
2526
+ ?.null || "ignore";
2527
+ if (nullBehavior === "ignore") {
2528
+ continue;
2529
+ }
2530
+ else if (nullBehavior === "throw") {
2531
+ throw new error_1.TypeORMError(`Null value encountered in property '${alias}.${key}' of a where condition. ` +
2532
+ `To match with SQL NULL, the IsNull() operator must be used. ` +
2533
+ `Set 'invalidWhereValuesBehavior.null' to 'ignore' or 'sql-null' in connection options to skip or handle null values.`);
2534
+ }
2535
+ // 'sql-null' behavior continues to the next logic
2536
+ }
2515
2537
  if (column) {
2516
2538
  let aliasPath = `${alias}.${propertyPath}`;
2517
2539
  if (column.isVirtualProperty && column.query) {
2518
2540
  aliasPath = `(${column.query(this.escape(alias))})`;
2519
2541
  }
2542
+ if (parameterValue === null) {
2543
+ andConditions.push(`${aliasPath} IS NULL`);
2544
+ continue;
2545
+ }
2520
2546
  // const parameterName = alias + "_" + propertyPath.split(".").join("_") + "_" + parameterIndex;
2521
2547
  // todo: we need to handle other operators as well?
2522
- let parameterValue = where[key];
2523
2548
  if (InstanceChecker_1.InstanceChecker.isEqualOperator(where[key])) {
2524
2549
  parameterValue = where[key].value;
2525
2550
  }
@@ -2535,37 +2560,6 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
2535
2560
  if (this.connection.driver.options.type === "mssql") {
2536
2561
  parameterValue = this.connection.driver.parametrizeValues(column, parameterValue);
2537
2562
  }
2538
- // if (parameterValue === null) {
2539
- // andConditions.push(`${aliasPath} IS NULL`);
2540
- //
2541
- // } else if (parameterValue instanceof FindOperator) {
2542
- // // let parameters: any[] = [];
2543
- // // if (parameterValue.useParameter) {
2544
- // // const realParameterValues: any[] = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value];
2545
- // // realParameterValues.forEach((realParameterValue, realParameterValueIndex) => {
2546
- // //
2547
- // // // don't create parameters for number to prevent max number of variables issues as much as possible
2548
- // // if (typeof realParameterValue === "number") {
2549
- // // parameters.push(realParameterValue);
2550
- // //
2551
- // // } else {
2552
- // // this.expressionMap.nativeParameters[parameterName + realParameterValueIndex] = realParameterValue;
2553
- // // parameterIndex++;
2554
- // // parameters.push(this.connection.driver.createParameter(parameterName + realParameterValueIndex, parameterIndex - 1));
2555
- // // }
2556
- // // });
2557
- // // }
2558
- // andConditions.push(
2559
- // this.createWhereConditionExpression(this.getWherePredicateCondition(aliasPath, parameterValue))
2560
- // // parameterValue.toSql(this.connection, aliasPath, parameters));
2561
- // )
2562
- //
2563
- // } else {
2564
- // this.expressionMap.nativeParameters[parameterName] = parameterValue;
2565
- // parameterIndex++;
2566
- // const parameter = this.connection.driver.createParameter(parameterName, parameterIndex - 1);
2567
- // andConditions.push(`${aliasPath} = ${parameter}`);
2568
- // }
2569
2563
  andConditions.push(this.createWhereConditionExpression(this.getWherePredicateCondition(aliasPath, parameterValue)));
2570
2564
  // this.conditions.push(`${alias}.${propertyPath} = :${paramName}`);
2571
2565
  // this.expressionMap.parameters[paramName] = where[key]; // todo: handle functions and other edge cases
@@ -2576,6 +2570,19 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
2576
2570
  andConditions.push(condition);
2577
2571
  }
2578
2572
  else if (relation) {
2573
+ if (where[key] === null) {
2574
+ const nullBehavior = this.connection.options.invalidWhereValuesBehavior
2575
+ ?.null || "ignore";
2576
+ if (nullBehavior === "sql-null") {
2577
+ andConditions.push(`${alias}.${propertyPath} IS NULL`);
2578
+ }
2579
+ else if (nullBehavior === "throw") {
2580
+ throw new error_1.TypeORMError(`Null value encountered in property '${alias}.${key}' of a where condition. ` +
2581
+ `Set 'invalidWhereValuesBehavior.null' to 'ignore' or 'sql-null' in connection options to skip or handle null values.`);
2582
+ }
2583
+ // 'ignore' behavior falls through to continue
2584
+ continue;
2585
+ }
2579
2586
  // if all properties of where are undefined we don't need to join anything
2580
2587
  // this can happen when user defines map with conditional queries inside
2581
2588
  if (typeof where[key] === "object") {