Skip to content

Commit

Permalink
refactor: add strict partial loading support to repository methods an…
Browse files Browse the repository at this point in the history
…d em.populate
  • Loading branch information
B4nan committed Apr 25, 2023
1 parent e62c3a0 commit 0a94890
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 120 deletions.
7 changes: 4 additions & 3 deletions packages/core/src/EntityManager.ts
Expand Up @@ -1400,19 +1400,20 @@ export class EntityManager<D extends IDatabaseDriver = IDatabaseDriver> {
async populate<
Entity extends object,
Hint extends string = never,
>(entities: Entity | Entity[], populate: AutoPath<Entity, Hint>[] | boolean, options: EntityLoaderOptions<Entity, Hint> = {}): Promise<Loaded<Entity, Hint>[]> {
Fields extends string = never,
>(entities: Entity | Entity[], populate: AutoPath<Entity, Hint>[] | boolean, options: EntityLoaderOptions<Entity, Hint, Fields> = {}): Promise<Loaded<Entity, Hint, Fields>[]> {
entities = Utils.asArray(entities);

if (entities.length === 0) {
return entities as Loaded<Entity, Hint>[];
return entities as Loaded<Entity, Hint, Fields>[];
}

const em = this.getContext();
const entityName = (entities[0] as Dictionary).constructor.name;
const preparedPopulate = em.preparePopulate<Entity>(entityName, { populate: populate as true });
await em.entityLoader.populate(entityName, entities, preparedPopulate, options);

return entities as Loaded<Entity, Hint>[];
return entities as Loaded<Entity, Hint, Fields>[];
}

/**
Expand Down

0 comments on commit 0a94890

Please sign in to comment.