333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../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\";\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 a new entities and copies all entity properties from given objects into their new entities.\n     * Note that it copies only properties that 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 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 plan 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<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     * 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     * 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     * 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":".."}