typeorm 0.2.42-dev.bd22dc3 → 0.2.42-dev.e52b26c

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 (126) hide show
  1. package/browser/cache/RedisQueryResultCache.js +40 -35
  2. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  3. package/browser/connection/Connection.d.ts +2 -2
  4. package/browser/connection/Connection.js +1 -1
  5. package/browser/connection/Connection.js.map +1 -1
  6. package/browser/decorator/Unique.d.ts +5 -4
  7. package/browser/decorator/Unique.js +7 -3
  8. package/browser/decorator/Unique.js.map +1 -1
  9. package/browser/decorator/options/UniqueOptions.d.ts +10 -0
  10. package/browser/decorator/options/UniqueOptions.js +3 -0
  11. package/browser/decorator/options/UniqueOptions.js.map +1 -0
  12. package/browser/driver/postgres/PostgresQueryRunner.js +10 -3
  13. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  14. package/browser/entity-manager/EntityManager.d.ts +2 -2
  15. package/browser/entity-manager/EntityManager.js +1 -1
  16. package/browser/entity-manager/EntityManager.js.map +1 -1
  17. package/browser/entity-manager/MongoEntityManager.js +2 -1
  18. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  19. package/browser/entity-schema/EntitySchemaTransformer.js +2 -1
  20. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  21. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  22. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  23. package/browser/metadata/UniqueMetadata.d.ts +5 -0
  24. package/browser/metadata/UniqueMetadata.js +1 -0
  25. package/browser/metadata/UniqueMetadata.js.map +1 -1
  26. package/browser/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  27. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  28. package/browser/query-builder/DeleteQueryBuilder.d.ts +1 -1
  29. package/browser/query-builder/DeleteQueryBuilder.js +1 -1
  30. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  31. package/browser/query-builder/InsertQueryBuilder.d.ts +1 -1
  32. package/browser/query-builder/InsertQueryBuilder.js +1 -1
  33. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  34. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  35. package/browser/query-builder/QueryBuilder.js.map +1 -1
  36. package/browser/query-builder/RelationQueryBuilder.d.ts +1 -1
  37. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  38. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  39. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  40. package/browser/query-builder/SelectQueryBuilder.js +1 -1
  41. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  42. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  43. package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
  44. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  45. package/browser/query-builder/UpdateQueryBuilder.d.ts +1 -1
  46. package/browser/query-builder/UpdateQueryBuilder.js +1 -1
  47. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  48. package/browser/repository/AbstractRepository.d.ts +2 -2
  49. package/browser/repository/AbstractRepository.js +2 -2
  50. package/browser/repository/AbstractRepository.js.map +1 -1
  51. package/browser/repository/BaseEntity.d.ts +1 -1
  52. package/browser/repository/BaseEntity.js +1 -1
  53. package/browser/repository/BaseEntity.js.map +1 -1
  54. package/browser/repository/Repository.d.ts +1 -1
  55. package/browser/repository/Repository.js +1 -1
  56. package/browser/repository/Repository.js.map +1 -1
  57. package/browser/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  58. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  59. package/browser/schema-builder/table/TableUnique.d.ts +5 -0
  60. package/browser/schema-builder/table/TableUnique.js +5 -2
  61. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  62. package/cache/RedisQueryResultCache.js +39 -34
  63. package/cache/RedisQueryResultCache.js.map +1 -1
  64. package/commands/QueryCommand.d.ts +1 -1
  65. package/commands/QueryCommand.js +1 -1
  66. package/commands/QueryCommand.js.map +1 -1
  67. package/connection/Connection.d.ts +2 -2
  68. package/connection/Connection.js +1 -1
  69. package/connection/Connection.js.map +1 -1
  70. package/decorator/Unique.d.ts +5 -4
  71. package/decorator/Unique.js +7 -3
  72. package/decorator/Unique.js.map +1 -1
  73. package/decorator/options/UniqueOptions.d.ts +10 -0
  74. package/decorator/options/UniqueOptions.js +4 -0
  75. package/decorator/options/UniqueOptions.js.map +1 -0
  76. package/driver/postgres/PostgresQueryRunner.js +10 -3
  77. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  78. package/entity-manager/EntityManager.d.ts +2 -2
  79. package/entity-manager/EntityManager.js +1 -1
  80. package/entity-manager/EntityManager.js.map +1 -1
  81. package/entity-manager/MongoEntityManager.js +2 -1
  82. package/entity-manager/MongoEntityManager.js.map +1 -1
  83. package/entity-schema/EntitySchemaTransformer.js +2 -1
  84. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  85. package/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  86. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  87. package/metadata/UniqueMetadata.d.ts +5 -0
  88. package/metadata/UniqueMetadata.js +1 -0
  89. package/metadata/UniqueMetadata.js.map +1 -1
  90. package/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  91. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  92. package/package.json +1 -1
  93. package/query-builder/DeleteQueryBuilder.d.ts +1 -1
  94. package/query-builder/DeleteQueryBuilder.js +1 -1
  95. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  96. package/query-builder/InsertQueryBuilder.d.ts +1 -1
  97. package/query-builder/InsertQueryBuilder.js +1 -1
  98. package/query-builder/InsertQueryBuilder.js.map +1 -1
  99. package/query-builder/QueryBuilder.d.ts +1 -1
  100. package/query-builder/QueryBuilder.js.map +1 -1
  101. package/query-builder/RelationQueryBuilder.d.ts +1 -1
  102. package/query-builder/RelationQueryBuilder.js +1 -1
  103. package/query-builder/RelationQueryBuilder.js.map +1 -1
  104. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  105. package/query-builder/SelectQueryBuilder.js +1 -1
  106. package/query-builder/SelectQueryBuilder.js.map +1 -1
  107. package/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  108. package/query-builder/SoftDeleteQueryBuilder.js +1 -1
  109. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  110. package/query-builder/UpdateQueryBuilder.d.ts +1 -1
  111. package/query-builder/UpdateQueryBuilder.js +1 -1
  112. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  113. package/repository/AbstractRepository.d.ts +2 -2
  114. package/repository/AbstractRepository.js +2 -2
  115. package/repository/AbstractRepository.js.map +1 -1
  116. package/repository/BaseEntity.d.ts +1 -1
  117. package/repository/BaseEntity.js +1 -1
  118. package/repository/BaseEntity.js.map +1 -1
  119. package/repository/Repository.d.ts +1 -1
  120. package/repository/Repository.js +1 -1
  121. package/repository/Repository.js.map +1 -1
  122. package/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  123. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  124. package/schema-builder/table/TableUnique.d.ts +5 -0
  125. package/schema-builder/table/TableUnique.js +5 -2
  126. package/schema-builder/table/TableUnique.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/repository/Repository.ts"],"names":[],"mappings":"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","file":"Repository.js","sourcesContent":["import {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {FindOneOptions} from \"../find-options/FindOneOptions\";\nimport {DeepPartial} from \"../common/DeepPartial\";\nimport {SaveOptions} from \"./SaveOptions\";\nimport {RemoveOptions} from \"./RemoveOptions\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {DeleteResult} from \"../query-builder/result/DeleteResult\";\nimport {UpdateResult} from \"../query-builder/result/UpdateResult\";\nimport {InsertResult} from \"../query-builder/result/InsertResult\";\nimport {QueryDeepPartialEntity} from \"../query-builder/QueryPartialEntity\";\nimport {ObjectID} from \"../driver/mongodb/typings\";\nimport {FindConditions} from \"../find-options/FindConditions\";\nimport {UpsertOptions} from \"./UpsertOptions\";\n\n/**\n * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.\n */\nexport class Repository<Entity extends ObjectLiteral> {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity Manager used by this repository.\n */\n readonly manager: EntityManager;\n\n /**\n * Entity metadata of the entity current repository manages.\n */\n readonly metadata: EntityMetadata;\n\n /**\n * Query runner provider used for this repository.\n */\n readonly queryRunner?: QueryRunner;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n createQueryBuilder(alias?: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity> {\n return this.manager.createQueryBuilder<Entity>(this.metadata.target as any, alias || this.metadata.targetName, queryRunner || this.queryRunner);\n }\n\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get target(): Function|string {\n return this.metadata.target;\n }\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.manager.hasId(this.metadata.target, entity);\n }\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.manager.getId(this.metadata.target, entity);\n }\n\n /**\n * Creates a new entity instance.\n */\n create(): Entity;\n\n /**\n * Creates new entities and copies all entity properties from given objects into their new entities.\n * Note that it copies only properties that are present in entity schema.\n */\n create(entityLikeArray: DeepPartial<Entity>[]): Entity[];\n\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that are present in entity schema.\n */\n create(entityLike: DeepPartial<Entity>): Entity;\n\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n create(plainEntityLikeOrPlainEntityLikes?: DeepPartial<Entity>|DeepPartial<Entity>[]): Entity|Entity[] {\n return this.manager.create<any>(this.metadata.target as any, plainEntityLikeOrPlainEntityLikes as any);\n }\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: DeepPartial<Entity>[]): Entity {\n return this.manager.merge(this.metadata.target as any, mergeIntoEntity, ...entityLikes);\n }\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: DeepPartial<Entity>): Promise<Entity|undefined> {\n return this.manager.preload(this.metadata.target as any, entityLike);\n }\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Saves one or many given entities.\n */\n save<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.save<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Removes a given entities from the database.\n */\n remove(entities: Entity[], options?: RemoveOptions): Promise<Entity[]>;\n\n /**\n * Removes a given entity from the database.\n */\n remove(entity: Entity, options?: RemoveOptions): Promise<Entity>;\n\n /**\n * Removes one or many given entities.\n */\n remove(entityOrEntities: Entity|Entity[], options?: RemoveOptions): Promise<Entity|Entity[]> {\n return this.manager.remove(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Records the delete date of one or many given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.softRemove<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Recovers one or many given entities.\n */\n recover<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.recover<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(entity: QueryDeepPartialEntity<Entity>|(QueryDeepPartialEntity<Entity>[])): Promise<InsertResult> {\n return this.manager.insert(this.metadata.target as any, entity);\n }\n\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n update(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>, partialEntity: QueryDeepPartialEntity<Entity>): Promise<UpdateResult> {\n return this.manager.update(this.metadata.target as any, criteria as any, partialEntity);\n }\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities: QueryDeepPartialEntity<Entity> | (QueryDeepPartialEntity<Entity>[]),\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>): Promise<InsertResult> {\n return this.manager.upsert(this.metadata.target as any, entityOrEntities, conflictPathsOrOptions);\n }\n\n /**\n * Deletes entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n delete(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<DeleteResult> {\n return this.manager.delete(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<UpdateResult> {\n return this.manager.softDelete(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<UpdateResult> {\n return this.manager.restore(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Counts entities that match given options.\n */\n count(options?: FindManyOptions<Entity>): Promise<number>;\n\n /**\n * Counts entities that match given conditions.\n */\n count(conditions?: FindConditions<Entity>): Promise<number>;\n\n /**\n * Counts entities that match given find options or conditions.\n */\n count(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<number> {\n return this.manager.count(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities that match given conditions.\n */\n find(conditions?: FindConditions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities that match given find options or conditions.\n */\n find(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<Entity[]> {\n return this.manager.find(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[ Entity[], number ]>;\n\n /**\n * Finds entities that match given conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(conditions?: FindConditions<Entity>): Promise<[ Entity[], number ]>;\n\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<[ Entity[], number ]> {\n return this.manager.findAndCount(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n findByIds(ids: any[], options?: FindManyOptions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities by ids.\n * Optionally conditions can be applied.\n */\n findByIds(ids: any[], conditions?: FindConditions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n findByIds(ids: any[], optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<Entity[]> {\n return this.manager.findByIds(this.metadata.target as any, ids, optionsOrConditions as any);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n findOne(id?: string|number|Date|ObjectID, options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given options.\n */\n findOne(options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOne(conditions?: FindConditions<Entity>, options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOne(optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<Entity>|FindConditions<Entity>, maybeOptions?: FindOneOptions<Entity>): Promise<Entity|undefined> {\n return this.manager.findOne(this.metadata.target as any, optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n findOneOrFail(id?: string|number|Date|ObjectID, options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given options.\n */\n findOneOrFail(options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOneOrFail(conditions?: FindConditions<Entity>, options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOneOrFail(optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<Entity>|FindConditions<Entity>, maybeOptions?: FindOneOptions<Entity>): Promise<Entity> {\n return this.manager.findOneOrFail(this.metadata.target as any, optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.manager.query(query, parameters);\n }\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.manager.clear(this.metadata.target);\n }\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(conditions: FindConditions<Entity>, propertyPath: string, value: number | string): Promise<UpdateResult> {\n return this.manager.increment(this.metadata.target, conditions, propertyPath, value);\n }\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(conditions: FindConditions<Entity>, propertyPath: string, value: number | string): Promise<UpdateResult> {\n return this.manager.decrement(this.metadata.target, conditions, propertyPath, value);\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/repository/Repository.ts"],"names":[],"mappings":"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","file":"Repository.js","sourcesContent":["import {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {FindOneOptions} from \"../find-options/FindOneOptions\";\nimport {DeepPartial} from \"../common/DeepPartial\";\nimport {SaveOptions} from \"./SaveOptions\";\nimport {RemoveOptions} from \"./RemoveOptions\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {DeleteResult} from \"../query-builder/result/DeleteResult\";\nimport {UpdateResult} from \"../query-builder/result/UpdateResult\";\nimport {InsertResult} from \"../query-builder/result/InsertResult\";\nimport {QueryDeepPartialEntity} from \"../query-builder/QueryPartialEntity\";\nimport {ObjectID} from \"../driver/mongodb/typings\";\nimport {FindConditions} from \"../find-options/FindConditions\";\nimport {UpsertOptions} from \"./UpsertOptions\";\n\n/**\n * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.\n */\nexport class Repository<Entity extends ObjectLiteral> {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity Manager used by this repository.\n */\n readonly manager: EntityManager;\n\n /**\n * Entity metadata of the entity current repository manages.\n */\n readonly metadata: EntityMetadata;\n\n /**\n * Query runner provider used for this repository.\n */\n readonly queryRunner?: QueryRunner;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder(alias?: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity> {\n return this.manager.createQueryBuilder<Entity>(this.metadata.target as any, alias || this.metadata.targetName, queryRunner || this.queryRunner);\n }\n\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n get target(): Function|string {\n return this.metadata.target;\n }\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.manager.hasId(this.metadata.target, entity);\n }\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.manager.getId(this.metadata.target, entity);\n }\n\n /**\n * Creates a new entity instance.\n */\n create(): Entity;\n\n /**\n * Creates new entities and copies all entity properties from given objects into their new entities.\n * Note that it copies only properties that are present in entity schema.\n */\n create(entityLikeArray: DeepPartial<Entity>[]): Entity[];\n\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that are present in entity schema.\n */\n create(entityLike: DeepPartial<Entity>): Entity;\n\n /**\n * Creates a new entity instance or instances.\n * Can copy properties from the given object into new entities.\n */\n create(plainEntityLikeOrPlainEntityLikes?: DeepPartial<Entity>|DeepPartial<Entity>[]): Entity|Entity[] {\n return this.manager.create<any>(this.metadata.target as any, plainEntityLikeOrPlainEntityLikes as any);\n }\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: DeepPartial<Entity>[]): Entity {\n return this.manager.merge(this.metadata.target as any, mergeIntoEntity, ...entityLikes);\n }\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: DeepPartial<Entity>): Promise<Entity|undefined> {\n return this.manager.preload(this.metadata.target as any, entityLike);\n }\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Saves one or many given entities.\n */\n save<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.save<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Removes a given entities from the database.\n */\n remove(entities: Entity[], options?: RemoveOptions): Promise<Entity[]>;\n\n /**\n * Removes a given entity from the database.\n */\n remove(entity: Entity, options?: RemoveOptions): Promise<Entity>;\n\n /**\n * Removes one or many given entities.\n */\n remove(entityOrEntities: Entity|Entity[], options?: RemoveOptions): Promise<Entity|Entity[]> {\n return this.manager.remove(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Records the delete date of one or many given entities.\n */\n softRemove<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.softRemove<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends DeepPartial<Entity>>(entities: T[], options: SaveOptions & { reload: false }): Promise<T[]>;\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<(T & Entity)[]>;\n\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends DeepPartial<Entity>>(entity: T, options: SaveOptions & { reload: false }): Promise<T>;\n\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T & Entity>;\n\n /**\n * Recovers one or many given entities.\n */\n recover<T extends DeepPartial<Entity>>(entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return this.manager.recover<Entity, T>(this.metadata.target as any, entityOrEntities as any, options);\n }\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(entity: QueryDeepPartialEntity<Entity>|(QueryDeepPartialEntity<Entity>[])): Promise<InsertResult> {\n return this.manager.insert(this.metadata.target as any, entity);\n }\n\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n update(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>, partialEntity: QueryDeepPartialEntity<Entity>): Promise<UpdateResult> {\n return this.manager.update(this.metadata.target as any, criteria as any, partialEntity);\n }\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities: QueryDeepPartialEntity<Entity> | (QueryDeepPartialEntity<Entity>[]),\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>): Promise<InsertResult> {\n return this.manager.upsert(this.metadata.target as any, entityOrEntities, conflictPathsOrOptions);\n }\n\n /**\n * Deletes entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n delete(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<DeleteResult> {\n return this.manager.delete(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<UpdateResult> {\n return this.manager.softDelete(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<Entity>): Promise<UpdateResult> {\n return this.manager.restore(this.metadata.target as any, criteria as any);\n }\n\n /**\n * Counts entities that match given options.\n */\n count(options?: FindManyOptions<Entity>): Promise<number>;\n\n /**\n * Counts entities that match given conditions.\n */\n count(conditions?: FindConditions<Entity>): Promise<number>;\n\n /**\n * Counts entities that match given find options or conditions.\n */\n count(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<number> {\n return this.manager.count(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities that match given conditions.\n */\n find(conditions?: FindConditions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities that match given find options or conditions.\n */\n find(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<Entity[]> {\n return this.manager.find(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[ Entity[], number ]>;\n\n /**\n * Finds entities that match given conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(conditions?: FindConditions<Entity>): Promise<[ Entity[], number ]>;\n\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<[ Entity[], number ]> {\n return this.manager.findAndCount(this.metadata.target as any, optionsOrConditions as any);\n }\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n findByIds(ids: any[], options?: FindManyOptions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities by ids.\n * Optionally conditions can be applied.\n */\n findByIds(ids: any[], conditions?: FindConditions<Entity>): Promise<Entity[]>;\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n findByIds(ids: any[], optionsOrConditions?: FindManyOptions<Entity>|FindConditions<Entity>): Promise<Entity[]> {\n return this.manager.findByIds(this.metadata.target as any, ids, optionsOrConditions as any);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n findOne(id?: string|number|Date|ObjectID, options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given options.\n */\n findOne(options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOne(conditions?: FindConditions<Entity>, options?: FindOneOptions<Entity>): Promise<Entity|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOne(optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<Entity>|FindConditions<Entity>, maybeOptions?: FindOneOptions<Entity>): Promise<Entity|undefined> {\n return this.manager.findOne(this.metadata.target as any, optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n findOneOrFail(id?: string|number|Date|ObjectID, options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given options.\n */\n findOneOrFail(options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOneOrFail(conditions?: FindConditions<Entity>, options?: FindOneOptions<Entity>): Promise<Entity>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n findOneOrFail(optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<Entity>|FindConditions<Entity>, maybeOptions?: FindOneOptions<Entity>): Promise<Entity> {\n return this.manager.findOneOrFail(this.metadata.target as any, optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.manager.query(query, parameters);\n }\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.manager.clear(this.metadata.target);\n }\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(conditions: FindConditions<Entity>, propertyPath: string, value: number | string): Promise<UpdateResult> {\n return this.manager.increment(this.metadata.target, conditions, propertyPath, value);\n }\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(conditions: FindConditions<Entity>, propertyPath: string, value: number | string): Promise<UpdateResult> {\n return this.manager.decrement(this.metadata.target, conditions, propertyPath, value);\n }\n\n}\n"],"sourceRoot":".."}
@@ -10,4 +10,9 @@ export interface TableUniqueOptions {
10
10
  * Columns that contains this constraint.
11
11
  */
12
12
  columnNames: string[];
13
+ /**
14
+ * Set this foreign key constraint as "DEFERRABLE" e.g. check constraints at start
15
+ * or at the end of a transaction
16
+ */
17
+ deferrable?: string;
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/schema-builder/options/TableUniqueOptions.ts"],"names":[],"mappings":"","file":"TableUniqueOptions.js","sourcesContent":["/**\n * Database's table unique constraint options.\n */\nexport interface TableUniqueOptions {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Constraint name.\n */\n name?: string;\n\n /**\n * Columns that contains this constraint.\n */\n columnNames: string[];\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/schema-builder/options/TableUniqueOptions.ts"],"names":[],"mappings":"","file":"TableUniqueOptions.js","sourcesContent":["/**\n * Database's table unique constraint options.\n */\nexport interface TableUniqueOptions {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Constraint name.\n */\n name?: string;\n\n /**\n * Columns that contains this constraint.\n */\n columnNames: string[];\n\n /**\n * Set this foreign key constraint as \"DEFERRABLE\" e.g. check constraints at start\n * or at the end of a transaction\n */\n deferrable?: string;\n\n}"],"sourceRoot":"../.."}
@@ -12,6 +12,11 @@ export declare class TableUnique {
12
12
  * Columns that contains this constraint.
13
13
  */
14
14
  columnNames: string[];
15
+ /**
16
+ * Set this foreign key constraint as "DEFERRABLE" e.g. check constraints at start
17
+ * or at the end of a transaction
18
+ */
19
+ deferrable?: string;
15
20
  constructor(options: TableUniqueOptions);
16
21
  /**
17
22
  * Creates a new copy of this constraint with exactly same properties.
@@ -13,6 +13,7 @@ var TableUnique = /** @class */ (function () {
13
13
  this.columnNames = [];
14
14
  this.name = options.name;
15
15
  this.columnNames = options.columnNames;
16
+ this.deferrable = options.deferrable;
16
17
  }
17
18
  // -------------------------------------------------------------------------
18
19
  // Public Methods
@@ -23,7 +24,8 @@ var TableUnique = /** @class */ (function () {
23
24
  TableUnique.prototype.clone = function () {
24
25
  return new TableUnique({
25
26
  name: this.name,
26
- columnNames: __spreadArray([], __read(this.columnNames), false)
27
+ columnNames: __spreadArray([], __read(this.columnNames), false),
28
+ deferrable: this.deferrable,
27
29
  });
28
30
  };
29
31
  // -------------------------------------------------------------------------
@@ -35,7 +37,8 @@ var TableUnique = /** @class */ (function () {
35
37
  TableUnique.create = function (uniqueMetadata) {
36
38
  return new TableUnique({
37
39
  name: uniqueMetadata.name,
38
- columnNames: uniqueMetadata.columns.map(function (column) { return column.databaseName; })
40
+ columnNames: uniqueMetadata.columns.map(function (column) { return column.databaseName; }),
41
+ deferrable: uniqueMetadata.deferrable,
39
42
  });
40
43
  };
41
44
  return TableUnique;
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/schema-builder/table/TableUnique.ts"],"names":[],"mappings":";AAGA;;GAEG;AACH;IAgBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qBAAY,OAA2B;QATvC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAC;QAOvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,2BAAK,GAAL;QACI,OAAO,IAAI,WAAW,CAAqB;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,2BAAM,IAAI,CAAC,WAAW,SAAC;SACrC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACI,kBAAM,GAAb,UAAc,cAA8B;QACxC,OAAO,IAAI,WAAW,CAAqB;YACvC,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;IAEL,kBAAC;AAAD,CArDA,AAqDC,IAAA","file":"TableUnique.js","sourcesContent":["import {TableUniqueOptions} from \"../options/TableUniqueOptions\";\nimport {UniqueMetadata} from \"../../metadata/UniqueMetadata\";\n\n/**\n * Database's table unique constraint stored in this class.\n */\nexport class TableUnique {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Constraint name.\n */\n name?: string;\n\n /**\n * Columns that contains this constraint.\n */\n columnNames: string[] = [];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: TableUniqueOptions) {\n this.name = options.name;\n this.columnNames = options.columnNames;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n clone(): TableUnique {\n return new TableUnique(<TableUniqueOptions>{\n name: this.name,\n columnNames: [...this.columnNames]\n });\n }\n\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates unique from the unique metadata object.\n */\n static create(uniqueMetadata: UniqueMetadata): TableUnique {\n return new TableUnique(<TableUniqueOptions>{\n name: uniqueMetadata.name,\n columnNames: uniqueMetadata.columns.map(column => column.databaseName)\n });\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/schema-builder/table/TableUnique.ts"],"names":[],"mappings":";AAGA;;GAEG;AACH;IAsBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qBAAY,OAA2B;QAfvC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAC;QAavB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACzC,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,2BAAK,GAAL;QACI,OAAO,IAAI,WAAW,CAAqB;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,2BAAM,IAAI,CAAC,WAAW,SAAC;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACI,kBAAM,GAAb,UAAc,cAA8B;QACxC,OAAO,IAAI,WAAW,CAAqB;YACvC,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC;YACtE,UAAU,EAAE,cAAc,CAAC,UAAU;SACxC,CAAC,CAAC;IACP,CAAC;IAEL,kBAAC;AAAD,CA9DA,AA8DC,IAAA","file":"TableUnique.js","sourcesContent":["import {TableUniqueOptions} from \"../options/TableUniqueOptions\";\nimport {UniqueMetadata} from \"../../metadata/UniqueMetadata\";\n\n/**\n * Database's table unique constraint stored in this class.\n */\nexport class TableUnique {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Constraint name.\n */\n name?: string;\n\n /**\n * Columns that contains this constraint.\n */\n columnNames: string[] = [];\n\n /**\n * Set this foreign key constraint as \"DEFERRABLE\" e.g. check constraints at start\n * or at the end of a transaction\n */\n deferrable?: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: TableUniqueOptions) {\n this.name = options.name;\n this.columnNames = options.columnNames;\n this.deferrable = options.deferrable;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new copy of this constraint with exactly same properties.\n */\n clone(): TableUnique {\n return new TableUnique(<TableUniqueOptions>{\n name: this.name,\n columnNames: [...this.columnNames],\n deferrable: this.deferrable,\n });\n }\n\n // -------------------------------------------------------------------------\n // Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates unique from the unique metadata object.\n */\n static create(uniqueMetadata: UniqueMetadata): TableUnique {\n return new TableUnique(<TableUniqueOptions>{\n name: uniqueMetadata.name,\n columnNames: uniqueMetadata.columns.map(column => column.databaseName),\n deferrable: uniqueMetadata.deferrable,\n });\n }\n\n}"],"sourceRoot":"../.."}
@@ -26,43 +26,48 @@ var RedisQueryResultCache = /** @class */ (function () {
26
26
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
27
27
  var cacheOptions;
28
28
  return (0, tslib_1.__generator)(this, function (_a) {
29
- cacheOptions = this.connection.options.cache;
30
- if (this.clientType === "redis") {
31
- if (cacheOptions && cacheOptions.options) {
32
- this.client = this.redis.createClient(cacheOptions.options);
33
- }
34
- else {
35
- this.client = this.redis.createClient();
36
- }
37
- }
38
- else if (this.clientType === "ioredis") {
39
- if (cacheOptions && cacheOptions.port) {
40
- if (cacheOptions.options) {
41
- this.client = new this.redis(cacheOptions.port, cacheOptions.options);
29
+ switch (_a.label) {
30
+ case 0:
31
+ cacheOptions = this.connection.options.cache;
32
+ if (!(this.clientType === "redis")) return [3 /*break*/, 3];
33
+ this.client = this.redis.createClient((0, tslib_1.__assign)((0, tslib_1.__assign)({}, cacheOptions === null || cacheOptions === void 0 ? void 0 : cacheOptions.options), { legacyMode: true }));
34
+ if (!("connect" in this.client)) return [3 /*break*/, 2];
35
+ return [4 /*yield*/, this.client.connect()];
36
+ case 1:
37
+ _a.sent();
38
+ _a.label = 2;
39
+ case 2: return [3 /*break*/, 4];
40
+ case 3:
41
+ if (this.clientType === "ioredis") {
42
+ if (cacheOptions && cacheOptions.port) {
43
+ if (cacheOptions.options) {
44
+ this.client = new this.redis(cacheOptions.port, cacheOptions.options);
45
+ }
46
+ else {
47
+ this.client = new this.redis(cacheOptions.port);
48
+ }
49
+ }
50
+ else if (cacheOptions && cacheOptions.options) {
51
+ this.client = new this.redis(cacheOptions.options);
52
+ }
53
+ else {
54
+ this.client = new this.redis();
55
+ }
42
56
  }
43
- else {
44
- this.client = new this.redis(cacheOptions.port);
57
+ else if (this.clientType === "ioredis/cluster") {
58
+ if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
59
+ this.client = new this.redis.Cluster(cacheOptions.options);
60
+ }
61
+ else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
62
+ this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
63
+ }
64
+ else {
65
+ throw new TypeORMError_1.TypeORMError("options.startupNodes required for " + this.clientType + ".");
66
+ }
45
67
  }
46
- }
47
- else if (cacheOptions && cacheOptions.options) {
48
- this.client = new this.redis(cacheOptions.options);
49
- }
50
- else {
51
- this.client = new this.redis();
52
- }
53
- }
54
- else if (this.clientType === "ioredis/cluster") {
55
- if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
56
- this.client = new this.redis.Cluster(cacheOptions.options);
57
- }
58
- else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
59
- this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
60
- }
61
- else {
62
- throw new TypeORMError_1.TypeORMError("options.startupNodes required for " + this.clientType + ".");
63
- }
68
+ _a.label = 4;
69
+ case 4: return [2 /*return*/];
64
70
  }
65
- return [2 /*return*/];
66
71
  });
67
72
  });
68
73
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any;\n\n /**\n * Connected redis client.\n */\n protected client: any;\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\";\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = this.redis.createClient(cacheOptions.options);\n } else {\n this.client = this.redis.createClient();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\n }\n else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n } else {\n this.client = new this.redis();\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n this.client = undefined;\n });\n });\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(undefined);\n }\n });\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return (savedCache.time! + savedCache.duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n }\n });\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\");\n } else {\n return PlatformTools.load(this.clientType);\n }\n } catch (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any;\n\n /**\n * Connected redis client.\n */\n protected client: any;\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\";\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n this.client = this.redis.createClient({\n ...cacheOptions?.options,\n legacyMode: true\n });\n if (\"connect\" in this.client) {\n await this.client.connect();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\n }\n else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n } else {\n this.client = new this.redis();\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n this.client = undefined;\n });\n });\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(undefined);\n }\n });\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return (savedCache.time! + savedCache.duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n }\n });\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\");\n } else {\n return PlatformTools.load(this.clientType);\n }\n } catch (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
@@ -1,6 +1,6 @@
1
1
  import * as yargs from "yargs";
2
2
  /**
3
- * Executes an sql query on the given connection.
3
+ * Executes an SQL query on the given connection.
4
4
  */
5
5
  export declare class QueryCommand implements yargs.CommandModule {
6
6
  command: string;
@@ -7,7 +7,7 @@ var ConnectionOptionsReader_1 = require("../connection/ConnectionOptionsReader")
7
7
  var PlatformTools_1 = require("../platform/PlatformTools");
8
8
  var chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
9
9
  /**
10
- * Executes an sql query on the given connection.
10
+ * Executes an SQL query on the given connection.
11
11
  */
12
12
  var QueryCommand = /** @class */ (function () {
13
13
  function QueryCommand() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/QueryCommand.ts"],"names":[],"mappings":"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","file":"QueryCommand.js","sourcesContent":["import {createConnection} from \"../globals\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {ConnectionOptionsReader} from \"../connection/ConnectionOptionsReader\";\nimport {Connection} from \"../connection/Connection\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport * as yargs from \"yargs\";\nimport chalk from \"chalk\";\n\n/**\n * Executes an sql query on the given connection.\n */\nexport class QueryCommand implements yargs.CommandModule {\n command = \"query [query]\";\n describe = \"Executes given SQL query on a default connection. Specify connection name to run query on a specific connection.\";\n\n builder(args: yargs.Argv) {\n return args\n .positional(\"query\", {\n describe: \"The SQL Query to run\",\n type: \"string\"\n })\n .option(\"c\", {\n alias: \"connection\",\n default: \"default\",\n describe: \"Name of the connection on which to run a query.\"\n })\n .option(\"f\", {\n alias: \"config\",\n default: \"ormconfig\",\n describe: \"Name of the file with connection configuration.\"\n });\n }\n\n async handler(args: yargs.Arguments) {\n\n let connection: Connection|undefined = undefined;\n let queryRunner: QueryRunner|undefined = undefined;\n try {\n\n // create a connection\n const connectionOptionsReader = new ConnectionOptionsReader({\n root: process.cwd(),\n configName: args.config as any\n });\n const connectionOptions = await connectionOptionsReader.get(args.connection as any);\n Object.assign(connectionOptions, {\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: false\n });\n connection = await createConnection(connectionOptions);\n\n // create a query runner and execute query using it\n queryRunner = connection.createQueryRunner();\n const query = args.query as string;\n console.log(chalk.green(\"Running query: \") + PlatformTools.highlightSql(query));\n const queryResult = await queryRunner.query(query);\n\n if (typeof queryResult === \"undefined\") {\n console.log(chalk.green(\"Query has been executed. No result was returned.\"));\n } else {\n console.log(chalk.green(\"Query has been executed. Result: \"));\n console.log(PlatformTools.highlightJson(JSON.stringify(queryResult, undefined, 2)));\n }\n\n await queryRunner.release();\n await connection.close();\n\n } catch (err) {\n if (queryRunner) await (queryRunner as QueryRunner).release();\n if (connection) await (connection as Connection).close();\n\n console.log(chalk.black.bgRed(\"Error during query execution:\"));\n console.error(err);\n process.exit(1);\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/commands/QueryCommand.ts"],"names":[],"mappings":"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","file":"QueryCommand.js","sourcesContent":["import {createConnection} from \"../globals\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {ConnectionOptionsReader} from \"../connection/ConnectionOptionsReader\";\nimport {Connection} from \"../connection/Connection\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport * as yargs from \"yargs\";\nimport chalk from \"chalk\";\n\n/**\n * Executes an SQL query on the given connection.\n */\nexport class QueryCommand implements yargs.CommandModule {\n command = \"query [query]\";\n describe = \"Executes given SQL query on a default connection. Specify connection name to run query on a specific connection.\";\n\n builder(args: yargs.Argv) {\n return args\n .positional(\"query\", {\n describe: \"The SQL Query to run\",\n type: \"string\"\n })\n .option(\"c\", {\n alias: \"connection\",\n default: \"default\",\n describe: \"Name of the connection on which to run a query.\"\n })\n .option(\"f\", {\n alias: \"config\",\n default: \"ormconfig\",\n describe: \"Name of the file with connection configuration.\"\n });\n }\n\n async handler(args: yargs.Arguments) {\n\n let connection: Connection|undefined = undefined;\n let queryRunner: QueryRunner|undefined = undefined;\n try {\n\n // create a connection\n const connectionOptionsReader = new ConnectionOptionsReader({\n root: process.cwd(),\n configName: args.config as any\n });\n const connectionOptions = await connectionOptionsReader.get(args.connection as any);\n Object.assign(connectionOptions, {\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: false\n });\n connection = await createConnection(connectionOptions);\n\n // create a query runner and execute query using it\n queryRunner = connection.createQueryRunner();\n const query = args.query as string;\n console.log(chalk.green(\"Running query: \") + PlatformTools.highlightSql(query));\n const queryResult = await queryRunner.query(query);\n\n if (typeof queryResult === \"undefined\") {\n console.log(chalk.green(\"Query has been executed. No result was returned.\"));\n } else {\n console.log(chalk.green(\"Query has been executed. Result: \"));\n console.log(PlatformTools.highlightJson(JSON.stringify(queryResult, undefined, 2)));\n }\n\n await queryRunner.release();\n await connection.close();\n\n } catch (err) {\n if (queryRunner) await (queryRunner as QueryRunner).release();\n if (connection) await (connection as Connection).close();\n\n console.log(chalk.black.bgRed(\"Error during query execution:\"));\n console.error(err);\n process.exit(1);\n }\n }\n}\n"],"sourceRoot":".."}
@@ -169,11 +169,11 @@ export declare class Connection {
169
169
  */
170
170
  query(query: string, parameters?: any[], queryRunner?: QueryRunner): Promise<any>;
171
171
  /**
172
- * Creates a new query builder that can be used to build a sql query.
172
+ * Creates a new query builder that can be used to build a SQL query.
173
173
  */
174
174
  createQueryBuilder<Entity>(entityClass: EntityTarget<Entity>, alias: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity>;
175
175
  /**
176
- * Creates a new query builder that can be used to build a sql query.
176
+ * Creates a new query builder that can be used to build a SQL query.
177
177
  */
178
178
  createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>;
179
179
  /**
@@ -426,7 +426,7 @@ var Connection = /** @class */ (function () {
426
426
  });
427
427
  };
428
428
  /**
429
- * Creates a new query builder that can be used to build a sql query.
429
+ * Creates a new query builder that can be used to build a SQL query.
430
430
  */
431
431
  Connection.prototype.createQueryBuilder = function (entityOrRunner, alias, queryRunner) {
432
432
  if (this instanceof MongoEntityManager_1.MongoEntityManager)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connection/Connection.ts"],"names":[],"mappings":"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","file":"Connection.js","sourcesContent":["import {Driver} from \"../driver/Driver\";\nimport {Repository} from \"../repository/Repository\";\nimport {EntitySubscriberInterface} from \"../subscriber/EntitySubscriberInterface\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {DefaultNamingStrategy} from \"../naming-strategy/DefaultNamingStrategy\";\nimport {CannotExecuteNotConnectedError} from \"../error/CannotExecuteNotConnectedError\";\nimport {CannotConnectAlreadyConnectedError} from \"../error/CannotConnectAlreadyConnectedError\";\nimport {TreeRepository} from \"../repository/TreeRepository\";\nimport {NamingStrategyInterface} from \"../naming-strategy/NamingStrategyInterface\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {Logger} from \"../logger/Logger\";\nimport {EntityMetadataNotFoundError} from \"../error/EntityMetadataNotFoundError\";\nimport {MigrationInterface} from \"../migration/MigrationInterface\";\nimport {MigrationExecutor} from \"../migration/MigrationExecutor\";\nimport {Migration} from \"../migration/Migration\";\nimport {MongoRepository} from \"../repository/MongoRepository\";\nimport {MongoDriver} from \"../driver/mongodb/MongoDriver\";\nimport {MongoEntityManager} from \"../entity-manager/MongoEntityManager\";\nimport {EntityMetadataValidator} from \"../metadata-builder/EntityMetadataValidator\";\nimport {ConnectionOptions} from \"./ConnectionOptions\";\nimport {QueryRunnerProviderAlreadyReleasedError} from \"../error/QueryRunnerProviderAlreadyReleasedError\";\nimport {EntityManagerFactory} from \"../entity-manager/EntityManagerFactory\";\nimport {DriverFactory} from \"../driver/DriverFactory\";\nimport {ConnectionMetadataBuilder} from \"./ConnectionMetadataBuilder\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {LoggerFactory} from \"../logger/LoggerFactory\";\nimport {QueryResultCacheFactory} from \"../cache/QueryResultCacheFactory\";\nimport {QueryResultCache} from \"../cache/QueryResultCache\";\nimport {SqljsEntityManager} from \"../entity-manager/SqljsEntityManager\";\nimport {RelationLoader} from \"../query-builder/RelationLoader\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport {IsolationLevel} from \"../driver/types/IsolationLevel\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Connection is a single database ORM connection to a specific database.\n * Its not required to be a database connection, depend on database type it can create connection pool.\n * You can have multiple connections to multiple databases in your application.\n */\nexport class Connection {\n\n // -------------------------------------------------------------------------\n // Public Readonly Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection name.\n */\n readonly name: string;\n\n /**\n * Connection options.\n */\n readonly options: ConnectionOptions;\n\n /**\n * Indicates if connection is initialized or not.\n */\n readonly isConnected: boolean;\n\n /**\n * Database driver used by this connection.\n */\n readonly driver: Driver;\n\n /**\n * EntityManager of this connection.\n */\n readonly manager: EntityManager;\n\n /**\n * Naming strategy used in the connection.\n */\n readonly namingStrategy: NamingStrategyInterface;\n\n /**\n * Logger used to log orm events.\n */\n readonly logger: Logger;\n\n /**\n * Migration instances that are registered for this connection.\n */\n readonly migrations: MigrationInterface[] = [];\n\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n readonly subscribers: EntitySubscriberInterface<any>[] = [];\n\n /**\n * All entity metadatas that are registered for this connection.\n */\n readonly entityMetadatas: EntityMetadata[] = [];\n\n /**\n * Used to work with query result cache.\n */\n readonly queryResultCache?: QueryResultCache;\n\n /**\n * Used to load relations and work with lazy relations.\n */\n readonly relationLoader: RelationLoader;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: ConnectionOptions) {\n this.name = options.name || \"default\";\n this.options = options;\n this.logger = new LoggerFactory().create(this.options.logger, this.options.logging);\n this.driver = new DriverFactory().create(this);\n this.manager = this.createEntityManager();\n this.namingStrategy = options.namingStrategy || new DefaultNamingStrategy();\n this.queryResultCache = options.cache ? new QueryResultCacheFactory(this).create() : undefined;\n this.relationLoader = new RelationLoader(this);\n this.isConnected = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get mongoManager(): MongoEntityManager {\n if (!(this.manager instanceof MongoEntityManager))\n throw new TypeORMError(`MongoEntityManager is only available for MongoDB databases.`);\n\n return this.manager as MongoEntityManager;\n }\n\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get sqljsManager(): SqljsEntityManager {\n if (!(this.manager instanceof SqljsEntityManager))\n throw new TypeORMError(`SqljsEntityManager is only available for Sqljs databases.`);\n\n return this.manager as SqljsEntityManager;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n async connect(): Promise<this> {\n if (this.isConnected)\n throw new CannotConnectAlreadyConnectedError(this.name);\n\n // connect to the database via its driver\n await this.driver.connect();\n\n // connect to the cache-specific database if cache is enabled\n if (this.queryResultCache)\n await this.queryResultCache.connect();\n\n // set connected status for the current connection\n ObjectUtils.assign(this, { isConnected: true });\n\n try {\n\n // build all metadatas registered in the current connection\n this.buildMetadatas();\n\n await this.driver.afterConnect();\n\n // if option is set - drop schema once connection is done\n if (this.options.dropSchema)\n await this.dropDatabase();\n\n // if option is set - automatically synchronize a schema\n if (this.options.synchronize)\n await this.synchronize();\n\n // if option is set - automatically synchronize a schema\n if (this.options.migrationsRun)\n await this.runMigrations({ transaction: this.options.migrationsTransactionMode });\n\n } catch (error) {\n\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n await this.close();\n throw error;\n }\n\n return this;\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n async close(): Promise<void> {\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n await this.driver.disconnect();\n\n // disconnect from the cache-specific database if cache was enabled\n if (this.queryResultCache)\n await this.queryResultCache.disconnect();\n\n ObjectUtils.assign(this, { isConnected: false });\n }\n\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n async synchronize(dropBeforeSync: boolean = false): Promise<void> {\n\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n if (dropBeforeSync)\n await this.dropDatabase();\n\n const schemaBuilder = this.driver.createSchemaBuilder();\n await schemaBuilder.build();\n }\n\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n async dropDatabase(): Promise<void> {\n const queryRunner = this.createQueryRunner();\n try {\n if (this.driver instanceof SqlServerDriver || this.driver instanceof MysqlDriver || this.driver instanceof AuroraDataApiDriver) {\n const databases: string[] = this.driver.database ? [this.driver.database] : [];\n this.entityMetadatas.forEach(metadata => {\n if (metadata.database && databases.indexOf(metadata.database) === -1)\n databases.push(metadata.database);\n });\n\n for (const database of databases) {\n await queryRunner.clearDatabase(database);\n }\n } else {\n await queryRunner.clearDatabase();\n }\n } finally {\n await queryRunner.release();\n }\n }\n\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n async runMigrations(options?: { transaction?: \"all\" | \"none\" | \"each\" }): Promise<Migration[]> {\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n const migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n\n const successMigrations = await migrationExecutor.executePendingMigrations();\n return successMigrations;\n }\n\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n async undoLastMigration(options?: { transaction?: \"all\" | \"none\" | \"each\" }): Promise<void> {\n\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n const migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n\n await migrationExecutor.undoLastMigration();\n }\n\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n async showMigrations(): Promise<boolean> {\n if (!this.isConnected) {\n throw new CannotExecuteNotConnectedError(this.name);\n }\n const migrationExecutor = new MigrationExecutor(this);\n return await migrationExecutor.showMigrations();\n }\n\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n hasMetadata(target: EntityTarget<any>): boolean {\n return !!this.findMetadata(target);\n }\n\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n getMetadata(target: EntityTarget<any>): EntityMetadata {\n const metadata = this.findMetadata(target);\n if (!metadata)\n throw new EntityMetadataNotFoundError(target);\n\n return metadata;\n }\n\n /**\n * Gets repository for the given entity.\n */\n getRepository<Entity>(target: EntityTarget<Entity>): Repository<Entity> {\n return this.manager.getRepository(target);\n }\n\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n getTreeRepository<Entity>(target: EntityTarget<Entity>): TreeRepository<Entity> {\n return this.manager.getTreeRepository(target);\n }\n\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n getMongoRepository<Entity>(target: EntityTarget<Entity>): MongoRepository<Entity> {\n if (!(this.driver instanceof MongoDriver))\n throw new TypeORMError(`You can use getMongoRepository only for MongoDB connections.`);\n\n return this.manager.getRepository(target) as any;\n }\n\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n getCustomRepository<T>(customRepository: ObjectType<T>): T {\n return this.manager.getCustomRepository(customRepository);\n }\n\n /**\n * Wraps given function execution (and all operations made there) into a transaction.\n * All database operations must be executed using provided entity manager.\n */\n async transaction<T>(runInTransaction: (entityManager: EntityManager) => Promise<T>): Promise<T>;\n async transaction<T>(isolationLevel: IsolationLevel, runInTransaction: (entityManager: EntityManager) => Promise<T>): Promise<T>;\n async transaction<T>(\n isolationOrRunInTransaction: IsolationLevel | ((entityManager: EntityManager) => Promise<T>),\n runInTransactionParam?: (entityManager: EntityManager) => Promise<T>\n ): Promise<any> {\n return this.manager.transaction(\n isolationOrRunInTransaction as any,\n runInTransactionParam as any\n );\n }\n\n /**\n * Executes raw SQL query and returns raw database results.\n */\n async query(query: string, parameters?: any[], queryRunner?: QueryRunner): Promise<any> {\n if (this instanceof MongoEntityManager)\n throw new TypeORMError(`Queries aren't supported by MongoDB.`);\n\n if (queryRunner && queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError();\n\n const usedQueryRunner = queryRunner || this.createQueryRunner();\n\n try {\n return await usedQueryRunner.query(query, parameters); // await is needed here because we are using finally\n\n } finally {\n if (!queryRunner)\n await usedQueryRunner.release();\n }\n }\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n createQueryBuilder<Entity>(entityClass: EntityTarget<Entity>, alias: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity>;\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>;\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n createQueryBuilder<Entity>(entityOrRunner?: EntityTarget<Entity>|QueryRunner, alias?: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity> {\n if (this instanceof MongoEntityManager)\n throw new TypeORMError(`Query Builder is not supported by MongoDB.`);\n\n if (alias) {\n const metadata = this.getMetadata(entityOrRunner as EntityTarget<Entity>);\n return new SelectQueryBuilder(this, queryRunner)\n .select(alias)\n .from(metadata.target, alias);\n\n } else {\n return new SelectQueryBuilder(this, entityOrRunner as QueryRunner|undefined);\n }\n }\n\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n createQueryRunner(mode: ReplicationMode = \"master\"): QueryRunner {\n const queryRunner = this.driver.createQueryRunner(mode);\n const manager = this.createEntityManager(queryRunner);\n Object.assign(queryRunner, { manager: manager });\n return queryRunner;\n }\n\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n getManyToManyMetadata(entityTarget: EntityTarget<any>, relationPropertyPath: string) {\n const relationMetadata = this.getMetadata(entityTarget).findRelationWithPropertyPath(relationPropertyPath);\n if (!relationMetadata)\n throw new TypeORMError(`Relation \"${relationPropertyPath}\" was not found in ${entityTarget} entity.`);\n if (!relationMetadata.isManyToMany)\n throw new TypeORMError(`Relation \"${entityTarget}#${relationPropertyPath}\" does not have a many-to-many relationship.` +\n `You can use this method only on many-to-many relations.`);\n\n return relationMetadata.junctionEntityMetadata;\n }\n\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n createEntityManager(queryRunner?: QueryRunner): EntityManager {\n return new EntityManagerFactory().create(this, queryRunner);\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n protected findMetadata(target: EntityTarget<any>): EntityMetadata|undefined {\n return this.entityMetadatas.find(metadata => {\n if (metadata.target === target)\n return true;\n if (target instanceof EntitySchema) {\n return metadata.name === target.options.name;\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n return metadata.tablePath === target;\n } else {\n return metadata.name === target || metadata.tableName === target;\n }\n }\n\n return false;\n });\n }\n\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n protected buildMetadatas(): void {\n\n const connectionMetadataBuilder = new ConnectionMetadataBuilder(this);\n const entityMetadataValidator = new EntityMetadataValidator();\n\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n const subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []);\n ObjectUtils.assign(this, { subscribers: subscribers });\n\n // build entity metadatas\n const entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []);\n ObjectUtils.assign(this, { entityMetadatas: entityMetadatas });\n\n // create migration instances\n const migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []);\n ObjectUtils.assign(this, { migrations: migrations });\n\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(this.entityMetadatas.filter(metadata => metadata.tableType !== \"view\"), this.driver);\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/connection/Connection.ts"],"names":[],"mappings":"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","file":"Connection.js","sourcesContent":["import {Driver} from \"../driver/Driver\";\nimport {Repository} from \"../repository/Repository\";\nimport {EntitySubscriberInterface} from \"../subscriber/EntitySubscriberInterface\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {DefaultNamingStrategy} from \"../naming-strategy/DefaultNamingStrategy\";\nimport {CannotExecuteNotConnectedError} from \"../error/CannotExecuteNotConnectedError\";\nimport {CannotConnectAlreadyConnectedError} from \"../error/CannotConnectAlreadyConnectedError\";\nimport {TreeRepository} from \"../repository/TreeRepository\";\nimport {NamingStrategyInterface} from \"../naming-strategy/NamingStrategyInterface\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {Logger} from \"../logger/Logger\";\nimport {EntityMetadataNotFoundError} from \"../error/EntityMetadataNotFoundError\";\nimport {MigrationInterface} from \"../migration/MigrationInterface\";\nimport {MigrationExecutor} from \"../migration/MigrationExecutor\";\nimport {Migration} from \"../migration/Migration\";\nimport {MongoRepository} from \"../repository/MongoRepository\";\nimport {MongoDriver} from \"../driver/mongodb/MongoDriver\";\nimport {MongoEntityManager} from \"../entity-manager/MongoEntityManager\";\nimport {EntityMetadataValidator} from \"../metadata-builder/EntityMetadataValidator\";\nimport {ConnectionOptions} from \"./ConnectionOptions\";\nimport {QueryRunnerProviderAlreadyReleasedError} from \"../error/QueryRunnerProviderAlreadyReleasedError\";\nimport {EntityManagerFactory} from \"../entity-manager/EntityManagerFactory\";\nimport {DriverFactory} from \"../driver/DriverFactory\";\nimport {ConnectionMetadataBuilder} from \"./ConnectionMetadataBuilder\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {LoggerFactory} from \"../logger/LoggerFactory\";\nimport {QueryResultCacheFactory} from \"../cache/QueryResultCacheFactory\";\nimport {QueryResultCache} from \"../cache/QueryResultCache\";\nimport {SqljsEntityManager} from \"../entity-manager/SqljsEntityManager\";\nimport {RelationLoader} from \"../query-builder/RelationLoader\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport {IsolationLevel} from \"../driver/types/IsolationLevel\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Connection is a single database ORM connection to a specific database.\n * Its not required to be a database connection, depend on database type it can create connection pool.\n * You can have multiple connections to multiple databases in your application.\n */\nexport class Connection {\n\n // -------------------------------------------------------------------------\n // Public Readonly Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection name.\n */\n readonly name: string;\n\n /**\n * Connection options.\n */\n readonly options: ConnectionOptions;\n\n /**\n * Indicates if connection is initialized or not.\n */\n readonly isConnected: boolean;\n\n /**\n * Database driver used by this connection.\n */\n readonly driver: Driver;\n\n /**\n * EntityManager of this connection.\n */\n readonly manager: EntityManager;\n\n /**\n * Naming strategy used in the connection.\n */\n readonly namingStrategy: NamingStrategyInterface;\n\n /**\n * Logger used to log orm events.\n */\n readonly logger: Logger;\n\n /**\n * Migration instances that are registered for this connection.\n */\n readonly migrations: MigrationInterface[] = [];\n\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n readonly subscribers: EntitySubscriberInterface<any>[] = [];\n\n /**\n * All entity metadatas that are registered for this connection.\n */\n readonly entityMetadatas: EntityMetadata[] = [];\n\n /**\n * Used to work with query result cache.\n */\n readonly queryResultCache?: QueryResultCache;\n\n /**\n * Used to load relations and work with lazy relations.\n */\n readonly relationLoader: RelationLoader;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: ConnectionOptions) {\n this.name = options.name || \"default\";\n this.options = options;\n this.logger = new LoggerFactory().create(this.options.logger, this.options.logging);\n this.driver = new DriverFactory().create(this);\n this.manager = this.createEntityManager();\n this.namingStrategy = options.namingStrategy || new DefaultNamingStrategy();\n this.queryResultCache = options.cache ? new QueryResultCacheFactory(this).create() : undefined;\n this.relationLoader = new RelationLoader(this);\n this.isConnected = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get mongoManager(): MongoEntityManager {\n if (!(this.manager instanceof MongoEntityManager))\n throw new TypeORMError(`MongoEntityManager is only available for MongoDB databases.`);\n\n return this.manager as MongoEntityManager;\n }\n\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get sqljsManager(): SqljsEntityManager {\n if (!(this.manager instanceof SqljsEntityManager))\n throw new TypeORMError(`SqljsEntityManager is only available for Sqljs databases.`);\n\n return this.manager as SqljsEntityManager;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n async connect(): Promise<this> {\n if (this.isConnected)\n throw new CannotConnectAlreadyConnectedError(this.name);\n\n // connect to the database via its driver\n await this.driver.connect();\n\n // connect to the cache-specific database if cache is enabled\n if (this.queryResultCache)\n await this.queryResultCache.connect();\n\n // set connected status for the current connection\n ObjectUtils.assign(this, { isConnected: true });\n\n try {\n\n // build all metadatas registered in the current connection\n this.buildMetadatas();\n\n await this.driver.afterConnect();\n\n // if option is set - drop schema once connection is done\n if (this.options.dropSchema)\n await this.dropDatabase();\n\n // if option is set - automatically synchronize a schema\n if (this.options.synchronize)\n await this.synchronize();\n\n // if option is set - automatically synchronize a schema\n if (this.options.migrationsRun)\n await this.runMigrations({ transaction: this.options.migrationsTransactionMode });\n\n } catch (error) {\n\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n await this.close();\n throw error;\n }\n\n return this;\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n async close(): Promise<void> {\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n await this.driver.disconnect();\n\n // disconnect from the cache-specific database if cache was enabled\n if (this.queryResultCache)\n await this.queryResultCache.disconnect();\n\n ObjectUtils.assign(this, { isConnected: false });\n }\n\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n async synchronize(dropBeforeSync: boolean = false): Promise<void> {\n\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n if (dropBeforeSync)\n await this.dropDatabase();\n\n const schemaBuilder = this.driver.createSchemaBuilder();\n await schemaBuilder.build();\n }\n\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n async dropDatabase(): Promise<void> {\n const queryRunner = this.createQueryRunner();\n try {\n if (this.driver instanceof SqlServerDriver || this.driver instanceof MysqlDriver || this.driver instanceof AuroraDataApiDriver) {\n const databases: string[] = this.driver.database ? [this.driver.database] : [];\n this.entityMetadatas.forEach(metadata => {\n if (metadata.database && databases.indexOf(metadata.database) === -1)\n databases.push(metadata.database);\n });\n\n for (const database of databases) {\n await queryRunner.clearDatabase(database);\n }\n } else {\n await queryRunner.clearDatabase();\n }\n } finally {\n await queryRunner.release();\n }\n }\n\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n async runMigrations(options?: { transaction?: \"all\" | \"none\" | \"each\" }): Promise<Migration[]> {\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n const migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n\n const successMigrations = await migrationExecutor.executePendingMigrations();\n return successMigrations;\n }\n\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n async undoLastMigration(options?: { transaction?: \"all\" | \"none\" | \"each\" }): Promise<void> {\n\n if (!this.isConnected)\n throw new CannotExecuteNotConnectedError(this.name);\n\n const migrationExecutor = new MigrationExecutor(this);\n migrationExecutor.transaction = (options && options.transaction) || \"all\";\n\n await migrationExecutor.undoLastMigration();\n }\n\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n async showMigrations(): Promise<boolean> {\n if (!this.isConnected) {\n throw new CannotExecuteNotConnectedError(this.name);\n }\n const migrationExecutor = new MigrationExecutor(this);\n return await migrationExecutor.showMigrations();\n }\n\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n hasMetadata(target: EntityTarget<any>): boolean {\n return !!this.findMetadata(target);\n }\n\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n getMetadata(target: EntityTarget<any>): EntityMetadata {\n const metadata = this.findMetadata(target);\n if (!metadata)\n throw new EntityMetadataNotFoundError(target);\n\n return metadata;\n }\n\n /**\n * Gets repository for the given entity.\n */\n getRepository<Entity>(target: EntityTarget<Entity>): Repository<Entity> {\n return this.manager.getRepository(target);\n }\n\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n getTreeRepository<Entity>(target: EntityTarget<Entity>): TreeRepository<Entity> {\n return this.manager.getTreeRepository(target);\n }\n\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n getMongoRepository<Entity>(target: EntityTarget<Entity>): MongoRepository<Entity> {\n if (!(this.driver instanceof MongoDriver))\n throw new TypeORMError(`You can use getMongoRepository only for MongoDB connections.`);\n\n return this.manager.getRepository(target) as any;\n }\n\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n */\n getCustomRepository<T>(customRepository: ObjectType<T>): T {\n return this.manager.getCustomRepository(customRepository);\n }\n\n /**\n * Wraps given function execution (and all operations made there) into a transaction.\n * All database operations must be executed using provided entity manager.\n */\n async transaction<T>(runInTransaction: (entityManager: EntityManager) => Promise<T>): Promise<T>;\n async transaction<T>(isolationLevel: IsolationLevel, runInTransaction: (entityManager: EntityManager) => Promise<T>): Promise<T>;\n async transaction<T>(\n isolationOrRunInTransaction: IsolationLevel | ((entityManager: EntityManager) => Promise<T>),\n runInTransactionParam?: (entityManager: EntityManager) => Promise<T>\n ): Promise<any> {\n return this.manager.transaction(\n isolationOrRunInTransaction as any,\n runInTransactionParam as any\n );\n }\n\n /**\n * Executes raw SQL query and returns raw database results.\n */\n async query(query: string, parameters?: any[], queryRunner?: QueryRunner): Promise<any> {\n if (this instanceof MongoEntityManager)\n throw new TypeORMError(`Queries aren't supported by MongoDB.`);\n\n if (queryRunner && queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError();\n\n const usedQueryRunner = queryRunner || this.createQueryRunner();\n\n try {\n return await usedQueryRunner.query(query, parameters); // await is needed here because we are using finally\n\n } finally {\n if (!queryRunner)\n await usedQueryRunner.release();\n }\n }\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity>(entityClass: EntityTarget<Entity>, alias: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity>;\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>;\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity>(entityOrRunner?: EntityTarget<Entity>|QueryRunner, alias?: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity> {\n if (this instanceof MongoEntityManager)\n throw new TypeORMError(`Query Builder is not supported by MongoDB.`);\n\n if (alias) {\n const metadata = this.getMetadata(entityOrRunner as EntityTarget<Entity>);\n return new SelectQueryBuilder(this, queryRunner)\n .select(alias)\n .from(metadata.target, alias);\n\n } else {\n return new SelectQueryBuilder(this, entityOrRunner as QueryRunner|undefined);\n }\n }\n\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n createQueryRunner(mode: ReplicationMode = \"master\"): QueryRunner {\n const queryRunner = this.driver.createQueryRunner(mode);\n const manager = this.createEntityManager(queryRunner);\n Object.assign(queryRunner, { manager: manager });\n return queryRunner;\n }\n\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n getManyToManyMetadata(entityTarget: EntityTarget<any>, relationPropertyPath: string) {\n const relationMetadata = this.getMetadata(entityTarget).findRelationWithPropertyPath(relationPropertyPath);\n if (!relationMetadata)\n throw new TypeORMError(`Relation \"${relationPropertyPath}\" was not found in ${entityTarget} entity.`);\n if (!relationMetadata.isManyToMany)\n throw new TypeORMError(`Relation \"${entityTarget}#${relationPropertyPath}\" does not have a many-to-many relationship.` +\n `You can use this method only on many-to-many relations.`);\n\n return relationMetadata.junctionEntityMetadata;\n }\n\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n createEntityManager(queryRunner?: QueryRunner): EntityManager {\n return new EntityManagerFactory().create(this, queryRunner);\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n protected findMetadata(target: EntityTarget<any>): EntityMetadata|undefined {\n return this.entityMetadatas.find(metadata => {\n if (metadata.target === target)\n return true;\n if (target instanceof EntitySchema) {\n return metadata.name === target.options.name;\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n return metadata.tablePath === target;\n } else {\n return metadata.name === target || metadata.tableName === target;\n }\n }\n\n return false;\n });\n }\n\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n protected buildMetadatas(): void {\n\n const connectionMetadataBuilder = new ConnectionMetadataBuilder(this);\n const entityMetadataValidator = new EntityMetadataValidator();\n\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n const subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []);\n ObjectUtils.assign(this, { subscribers: subscribers });\n\n // build entity metadatas\n const entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []);\n ObjectUtils.assign(this, { entityMetadatas: entityMetadatas });\n\n // create migration instances\n const migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []);\n ObjectUtils.assign(this, { migrations: migrations });\n\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(this.entityMetadatas.filter(metadata => metadata.tableType !== \"view\"), this.driver);\n }\n}\n"],"sourceRoot":".."}
@@ -1,20 +1,21 @@
1
+ import { UniqueOptions } from "./options/UniqueOptions";
1
2
  /**
2
3
  * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.
3
4
  */
4
- export declare function Unique(name: string, fields: string[]): ClassDecorator & PropertyDecorator;
5
+ export declare function Unique(name: string, fields: string[], options?: UniqueOptions): ClassDecorator & PropertyDecorator;
5
6
  /**
6
7
  * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.
7
8
  */
8
- export declare function Unique(fields: string[]): ClassDecorator & PropertyDecorator;
9
+ export declare function Unique(fields: string[], options?: UniqueOptions): ClassDecorator & PropertyDecorator;
9
10
  /**
10
11
  * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.
11
12
  */
12
13
  export declare function Unique(fields: (object?: any) => (any[] | {
13
14
  [key: string]: number;
14
- })): ClassDecorator & PropertyDecorator;
15
+ }), options?: UniqueOptions): ClassDecorator & PropertyDecorator;
15
16
  /**
16
17
  * Composite unique constraint must be set on entity classes and must specify entity's fields to be unique.
17
18
  */
18
19
  export declare function Unique(name: string, fields: (object?: any) => (any[] | {
19
20
  [key: string]: number;
20
- })): ClassDecorator & PropertyDecorator;
21
+ }), options?: UniqueOptions): ClassDecorator & PropertyDecorator;