typeorm 0.3.11-dev.6eb674b → 0.3.11-dev.7fbc3ad

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 (139) hide show
  1. package/README.md +2 -2
  2. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  3. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  4. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  5. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  6. package/browser/driver/postgres/PostgresDriver.js +11 -1
  7. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  8. package/browser/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  9. package/browser/driver/postgres/PostgresQueryRunner.js +97 -0
  10. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  11. package/browser/driver/react-native/ReactNativeQueryRunner.js +4 -4
  12. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  13. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  14. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  15. package/browser/driver/sqlite/SqliteDriver.js +18 -6
  16. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  17. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  18. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  19. package/browser/entity-manager/EntityManager.js +3 -1
  20. package/browser/entity-manager/EntityManager.js.map +1 -1
  21. package/browser/find-options/FindOperatorType.d.ts +1 -1
  22. package/browser/find-options/FindOperatorType.js.map +1 -1
  23. package/browser/find-options/FindOptionsOrder.d.ts +1 -1
  24. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  25. package/browser/find-options/FindOptionsRelations.d.ts +1 -1
  26. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  27. package/browser/find-options/FindOptionsSelect.d.ts +1 -1
  28. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  29. package/browser/find-options/FindOptionsWhere.d.ts +2 -2
  30. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  31. package/browser/find-options/operator/And.d.ts +2 -0
  32. package/browser/find-options/operator/And.js +6 -0
  33. package/browser/find-options/operator/And.js.map +1 -0
  34. package/browser/index.d.ts +1 -0
  35. package/browser/index.js +1 -0
  36. package/browser/index.js.map +1 -1
  37. package/browser/migration/MigrationExecutor.js +1 -1
  38. package/browser/migration/MigrationExecutor.js.map +1 -1
  39. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  40. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  41. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  42. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  43. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  44. package/browser/query-builder/QueryBuilder.js +9 -0
  45. package/browser/query-builder/QueryBuilder.js.map +1 -1
  46. package/browser/query-builder/RelationLoader.js +1 -0
  47. package/browser/query-builder/RelationLoader.js.map +1 -1
  48. package/browser/query-builder/SelectQueryBuilder.js +4 -8
  49. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  50. package/browser/query-builder/WhereClause.d.ts +1 -1
  51. package/browser/query-builder/WhereClause.js.map +1 -1
  52. package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
  53. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  54. package/browser/repository/Repository.d.ts +1 -1
  55. package/browser/repository/Repository.js.map +1 -1
  56. package/browser/repository/TreeRepository.d.ts +0 -4
  57. package/browser/repository/TreeRepository.js +0 -11
  58. package/browser/repository/TreeRepository.js.map +1 -1
  59. package/browser/repository/UpsertOptions.d.ts +3 -1
  60. package/browser/repository/UpsertOptions.js.map +1 -1
  61. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  62. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -2
  63. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  64. package/browser/schema-builder/view/View.d.ts +13 -1
  65. package/browser/schema-builder/view/View.js +16 -0
  66. package/browser/schema-builder/view/View.js.map +1 -1
  67. package/browser/util/TreeRepositoryUtils.js +16 -6
  68. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  69. package/commands/MigrationRevertCommand.js +1 -0
  70. package/commands/MigrationRevertCommand.js.map +1 -1
  71. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  72. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  73. package/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  74. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  75. package/driver/postgres/PostgresDriver.js +11 -1
  76. package/driver/postgres/PostgresDriver.js.map +1 -1
  77. package/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  78. package/driver/postgres/PostgresQueryRunner.js +97 -0
  79. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  80. package/driver/react-native/ReactNativeQueryRunner.js +4 -4
  81. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  82. package/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  83. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  84. package/driver/sqlite/SqliteDriver.js +18 -6
  85. package/driver/sqlite/SqliteDriver.js.map +1 -1
  86. package/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  87. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  88. package/entity-manager/EntityManager.js +3 -1
  89. package/entity-manager/EntityManager.js.map +1 -1
  90. package/find-options/FindOperatorType.d.ts +1 -1
  91. package/find-options/FindOperatorType.js.map +1 -1
  92. package/find-options/FindOptionsOrder.d.ts +1 -1
  93. package/find-options/FindOptionsOrder.js.map +1 -1
  94. package/find-options/FindOptionsRelations.d.ts +1 -1
  95. package/find-options/FindOptionsRelations.js.map +1 -1
  96. package/find-options/FindOptionsSelect.d.ts +1 -1
  97. package/find-options/FindOptionsSelect.js.map +1 -1
  98. package/find-options/FindOptionsWhere.d.ts +2 -2
  99. package/find-options/FindOptionsWhere.js.map +1 -1
  100. package/find-options/operator/And.d.ts +2 -0
  101. package/find-options/operator/And.js +10 -0
  102. package/find-options/operator/And.js.map +1 -0
  103. package/index.d.ts +1 -0
  104. package/index.js +1 -0
  105. package/index.js.map +1 -1
  106. package/index.mjs +2 -0
  107. package/migration/MigrationExecutor.js +1 -1
  108. package/migration/MigrationExecutor.js.map +1 -1
  109. package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  110. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  111. package/package.json +1 -1
  112. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  113. package/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  114. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  115. package/query-builder/QueryBuilder.js +9 -0
  116. package/query-builder/QueryBuilder.js.map +1 -1
  117. package/query-builder/RelationLoader.js +1 -0
  118. package/query-builder/RelationLoader.js.map +1 -1
  119. package/query-builder/SelectQueryBuilder.js +4 -8
  120. package/query-builder/SelectQueryBuilder.js.map +1 -1
  121. package/query-builder/WhereClause.d.ts +1 -1
  122. package/query-builder/WhereClause.js.map +1 -1
  123. package/query-runner/BaseQueryRunner.d.ts +1 -1
  124. package/query-runner/BaseQueryRunner.js.map +1 -1
  125. package/repository/Repository.d.ts +1 -1
  126. package/repository/Repository.js.map +1 -1
  127. package/repository/TreeRepository.d.ts +0 -4
  128. package/repository/TreeRepository.js +0 -11
  129. package/repository/TreeRepository.js.map +1 -1
  130. package/repository/UpsertOptions.d.ts +3 -1
  131. package/repository/UpsertOptions.js.map +1 -1
  132. package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  133. package/schema-builder/RdbmsSchemaBuilder.js +74 -2
  134. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  135. package/schema-builder/view/View.d.ts +13 -1
  136. package/schema-builder/view/View.js +16 -0
  137. package/schema-builder/view/View.js.map +1 -1
  138. package/util/TreeRepositoryUtils.js +16 -6
  139. package/util/TreeRepositoryUtils.js.map +1 -1
@@ -11,27 +11,34 @@ class TreeRepositoryUtils {
11
11
  // -------------------------------------------------------------------------
12
12
  static createRelationMaps(manager, metadata, alias, rawResults) {
13
13
  return rawResults.map((rawResult) => {
14
+ var _a;
14
15
  const joinColumn = metadata.treeParentRelation.joinColumns[0];
16
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
15
17
  // fixes issue #2518, default to databaseName property when givenDatabaseName is not set
16
18
  const joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;
17
- const id = rawResult[alias + "_" + metadata.primaryColumns[0].databaseName];
19
+ const referencedColumnName = referencedColumn.givenDatabaseName ||
20
+ referencedColumn.databaseName;
21
+ const id = rawResult[alias + "_" + referencedColumnName];
18
22
  const parentId = rawResult[alias + "_" + joinColumnName];
19
23
  return {
20
- id: manager.connection.driver.prepareHydratedValue(id, metadata.primaryColumns[0]),
24
+ id: manager.connection.driver.prepareHydratedValue(id, referencedColumn),
21
25
  parentId: manager.connection.driver.prepareHydratedValue(parentId, joinColumn),
22
26
  };
23
27
  });
24
28
  }
25
29
  static buildChildrenEntityTree(metadata, entity, entities, relationMaps, options) {
30
+ var _a;
26
31
  const childProperty = metadata.treeChildrenRelation.propertyName;
27
32
  if (options.depth === 0) {
28
33
  entity[childProperty] = [];
29
34
  return;
30
35
  }
31
- const parentEntityId = metadata.primaryColumns[0].getEntityValue(entity);
36
+ const joinColumn = metadata.treeParentRelation.joinColumns[0];
37
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
38
+ const parentEntityId = referencedColumn.getEntityValue(entity);
32
39
  const childRelationMaps = relationMaps.filter((relationMap) => relationMap.parentId === parentEntityId);
33
40
  const childIds = new Set(childRelationMaps.map((relationMap) => relationMap.id));
34
- entity[childProperty] = entities.filter((entity) => childIds.has(metadata.primaryColumns[0].getEntityValue(entity)));
41
+ entity[childProperty] = entities.filter((entity) => childIds.has(referencedColumn.getEntityValue(entity)));
35
42
  entity[childProperty].forEach((childEntity) => {
36
43
  TreeRepositoryUtils.buildChildrenEntityTree(metadata, childEntity, entities, relationMaps, {
37
44
  ...options,
@@ -40,13 +47,16 @@ class TreeRepositoryUtils {
40
47
  });
41
48
  }
42
49
  static buildParentEntityTree(metadata, entity, entities, relationMaps) {
50
+ var _a;
43
51
  const parentProperty = metadata.treeParentRelation.propertyName;
44
- const entityId = metadata.primaryColumns[0].getEntityValue(entity);
52
+ const joinColumn = metadata.treeParentRelation.joinColumns[0];
53
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
54
+ const entityId = referencedColumn.getEntityValue(entity);
45
55
  const parentRelationMap = relationMaps.find((relationMap) => relationMap.id === entityId);
46
56
  const parentEntity = entities.find((entity) => {
47
57
  if (!parentRelationMap)
48
58
  return false;
49
- return (metadata.primaryColumns[0].getEntityValue(entity) ===
59
+ return (referencedColumn.getEntityValue(entity) ===
50
60
  parentRelationMap.parentId);
51
61
  });
52
62
  if (parentEntity) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/TreeRepositoryUtils.ts"],"names":[],"mappings":"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","file":"TreeRepositoryUtils.js","sourcesContent":["import { EntityManager } from \"../entity-manager/EntityManager\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { FindTreesOptions } from \"../repository/FindTreesOptions\"\n\n/**\n * Provides utilities for manipulating tree structures.\n *\n */\nexport class TreeRepositoryUtils {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n static createRelationMaps(\n manager: EntityManager,\n metadata: EntityMetadata,\n alias: string,\n rawResults: any[],\n ): { id: any; parentId: any }[] {\n return rawResults.map((rawResult) => {\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName =\n joinColumn.givenDatabaseName || joinColumn.databaseName\n const id =\n rawResult[alias + \"_\" + metadata.primaryColumns[0].databaseName]\n const parentId = rawResult[alias + \"_\" + joinColumnName]\n return {\n id: manager.connection.driver.prepareHydratedValue(\n id,\n metadata.primaryColumns[0],\n ),\n parentId: manager.connection.driver.prepareHydratedValue(\n parentId,\n joinColumn,\n ),\n }\n })\n }\n\n static buildChildrenEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n options: FindTreesOptions & { depth: number },\n ): void {\n const childProperty = metadata.treeChildrenRelation!.propertyName\n if (options.depth === 0) {\n entity[childProperty] = []\n return\n }\n const parentEntityId = metadata.primaryColumns[0].getEntityValue(entity)\n const childRelationMaps = relationMaps.filter(\n (relationMap) => relationMap.parentId === parentEntityId,\n )\n const childIds = new Set(\n childRelationMaps.map((relationMap) => relationMap.id),\n )\n entity[childProperty] = entities.filter((entity) =>\n childIds.has(metadata.primaryColumns[0].getEntityValue(entity)),\n )\n entity[childProperty].forEach((childEntity: any) => {\n TreeRepositoryUtils.buildChildrenEntityTree(\n metadata,\n childEntity,\n entities,\n relationMaps,\n {\n ...options,\n depth: options.depth - 1,\n },\n )\n })\n }\n\n static buildParentEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n ): void {\n const parentProperty = metadata.treeParentRelation!.propertyName\n const entityId = metadata.primaryColumns[0].getEntityValue(entity)\n const parentRelationMap = relationMaps.find(\n (relationMap) => relationMap.id === entityId,\n )\n const parentEntity = entities.find((entity) => {\n if (!parentRelationMap) return false\n\n return (\n metadata.primaryColumns[0].getEntityValue(entity) ===\n parentRelationMap.parentId\n )\n })\n if (parentEntity) {\n entity[parentProperty] = parentEntity\n TreeRepositoryUtils.buildParentEntityTree(\n metadata,\n entity[parentProperty],\n entities,\n relationMaps,\n )\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/util/TreeRepositoryUtils.ts"],"names":[],"mappings":"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","file":"TreeRepositoryUtils.js","sourcesContent":["import { EntityManager } from \"../entity-manager/EntityManager\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { FindTreesOptions } from \"../repository/FindTreesOptions\"\n\n/**\n * Provides utilities for manipulating tree structures.\n *\n */\nexport class TreeRepositoryUtils {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n static createRelationMaps(\n manager: EntityManager,\n metadata: EntityMetadata,\n alias: string,\n rawResults: any[],\n ): { id: any; parentId: any }[] {\n return rawResults.map((rawResult) => {\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName =\n joinColumn.givenDatabaseName || joinColumn.databaseName\n const referencedColumnName =\n referencedColumn.givenDatabaseName ||\n referencedColumn.databaseName\n const id = rawResult[alias + \"_\" + referencedColumnName]\n const parentId = rawResult[alias + \"_\" + joinColumnName]\n return {\n id: manager.connection.driver.prepareHydratedValue(\n id,\n referencedColumn,\n ),\n parentId: manager.connection.driver.prepareHydratedValue(\n parentId,\n joinColumn,\n ),\n }\n })\n }\n\n static buildChildrenEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n options: FindTreesOptions & { depth: number },\n ): void {\n const childProperty = metadata.treeChildrenRelation!.propertyName\n if (options.depth === 0) {\n entity[childProperty] = []\n return\n }\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n const parentEntityId = referencedColumn.getEntityValue(entity)\n const childRelationMaps = relationMaps.filter(\n (relationMap) => relationMap.parentId === parentEntityId,\n )\n const childIds = new Set(\n childRelationMaps.map((relationMap) => relationMap.id),\n )\n entity[childProperty] = entities.filter((entity) =>\n childIds.has(referencedColumn.getEntityValue(entity)),\n )\n entity[childProperty].forEach((childEntity: any) => {\n TreeRepositoryUtils.buildChildrenEntityTree(\n metadata,\n childEntity,\n entities,\n relationMaps,\n {\n ...options,\n depth: options.depth - 1,\n },\n )\n })\n }\n\n static buildParentEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n ): void {\n const parentProperty = metadata.treeParentRelation!.propertyName\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n const entityId = referencedColumn.getEntityValue(entity)\n const parentRelationMap = relationMaps.find(\n (relationMap) => relationMap.id === entityId,\n )\n const parentEntity = entities.find((entity) => {\n if (!parentRelationMap) return false\n\n return (\n referencedColumn.getEntityValue(entity) ===\n parentRelationMap.parentId\n )\n })\n if (parentEntity) {\n entity[parentProperty] = parentEntity\n TreeRepositoryUtils.buildParentEntityTree(\n metadata,\n entity[parentProperty],\n entities,\n relationMaps,\n )\n }\n }\n}\n"],"sourceRoot":".."}