@punks/backend-entity-manager 0.0.97 → 0.0.99
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.
- package/dist/cjs/index.js +29 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/__test__/providers/typeorm/queries/foo.d.ts +1 -1
- package/dist/cjs/types/abstractions/searchParameters.d.ts +5 -0
- package/dist/cjs/types/integrations/repository/typeorm/facets.d.ts +7 -0
- package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +4 -1
- package/dist/cjs/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appCompanies/appCompany.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appDivisions/appDivision.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appOrganizations/appOrganization.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appRoles/appRole.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appTenants/appTenant.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserGroupMembers/appUserGroupMember.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserGroups/appUserGroup.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserProfiles/appUserProfile.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserRoles/appUserRole.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUsers/appUser.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foos/foo.models.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foos/foo.query.d.ts +1 -1
- package/dist/esm/index.js +29 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/__test__/providers/typeorm/queries/foo.d.ts +1 -1
- package/dist/esm/types/abstractions/searchParameters.d.ts +5 -0
- package/dist/esm/types/integrations/repository/typeorm/facets.d.ts +7 -0
- package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +4 -1
- package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appCompanies/appCompany.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appDivisions/appDivision.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appOrganizations/appOrganization.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appRoles/appRole.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appTenants/appTenant.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserGroupMembers/appUserGroupMember.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserGroups/appUserGroup.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserProfiles/appUserProfile.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserRoles/appUserRole.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUsers/appUser.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/foos/foo.models.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foos/foo.query.d.ts +1 -1
- package/dist/index.d.ts +14 -2
- package/package.json +1 -1
|
@@ -8,5 +8,5 @@ export declare class FooQueryBuilder extends TypeOrmQueryBuilder<FooEntity, FooS
|
|
|
8
8
|
constructor(services: EntityServiceLocator<FooEntity, string>);
|
|
9
9
|
protected buildContextFilter(context?: IAuthenticationContext<unknown> | undefined): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
10
10
|
protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
11
|
-
protected calculateFacets(request: FooSearchParameters): Promise<FooFacets
|
|
11
|
+
protected calculateFacets(request: FooSearchParameters): Promise<FooFacets>;
|
|
12
12
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export interface IEntitySearchParameters<TSorting, TCursor> {
|
|
2
|
+
query?: IFullTextQuery;
|
|
2
3
|
filters?: ISearchFilters;
|
|
3
4
|
sorting?: ISearchSorting<TSorting>;
|
|
4
5
|
paging?: ISearchRequestPaging<TCursor>;
|
|
@@ -24,3 +25,7 @@ export declare enum SortDirection {
|
|
|
24
25
|
Asc = "asc",
|
|
25
26
|
Desc = "desc"
|
|
26
27
|
}
|
|
28
|
+
export interface IFullTextQuery {
|
|
29
|
+
term: string;
|
|
30
|
+
fields?: string[];
|
|
31
|
+
}
|
|
@@ -6,6 +6,7 @@ import { TypeOrmRepository } from "./repository";
|
|
|
6
6
|
import { EntityServiceLocator } from "../../../providers/services";
|
|
7
7
|
import { IEntitiesDeleteResult } from "../../../abstractions/repository";
|
|
8
8
|
import { QueryClauseBuilder } from "./queryClauseBuilder";
|
|
9
|
+
import { Facet } from "./facets";
|
|
9
10
|
export declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets extends IEntityFacets, TUserContext> extends QueryBuilderBase<TEntity, TEntitySearchParameters, TSorting, number, TFacets, TUserContext> {
|
|
10
11
|
private readonly services;
|
|
11
12
|
private repository;
|
|
@@ -15,6 +16,7 @@ export declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral,
|
|
|
15
16
|
count(filters: NonNullable<TEntitySearchParameters["filters"]>, context?: IAuthenticationContext<TUserContext> | undefined): Promise<number>;
|
|
16
17
|
delete(filters: NonNullable<TEntitySearchParameters["filters"]>, context?: IAuthenticationContext<TUserContext> | undefined): Promise<IEntitiesDeleteResult>;
|
|
17
18
|
search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, number, TFacets>>;
|
|
19
|
+
protected getFieldFacet(): Promise<void>;
|
|
18
20
|
protected findPagedQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TEntity[]>;
|
|
19
21
|
protected getRelationsToLoad(request: TEntitySearchParameters, context: IAuthenticationContext<TUserContext> | undefined): FindOptionsRelations<TEntity> | undefined;
|
|
20
22
|
protected buildPagingParameters(request: TEntitySearchParameters): {
|
|
@@ -24,6 +26,7 @@ export declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral,
|
|
|
24
26
|
protected countQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<number>;
|
|
25
27
|
protected abstract buildWhereClause(request: TEntitySearchParameters): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
|
|
26
28
|
protected abstract buildContextFilter(context?: IAuthenticationContext<TUserContext>): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
|
|
27
|
-
protected abstract calculateFacets(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TFacets
|
|
29
|
+
protected abstract calculateFacets(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TFacets>;
|
|
30
|
+
protected calculateFacet<TField extends keyof TEntity, TValue>(field: TField, request: TEntitySearchParameters, context: IAuthenticationContext<TUserContext> | undefined): Promise<Facet<TValue>>;
|
|
28
31
|
protected getRepository(): TypeOrmRepository<TEntity, unknown>;
|
|
29
32
|
}
|
|
@@ -8,6 +8,7 @@ export declare class TypeOrmRepository<TEntity extends ObjectLiteral, TEntityId>
|
|
|
8
8
|
private readonly logger;
|
|
9
9
|
constructor(innerRepository: Repository<TEntity>);
|
|
10
10
|
getInnerRepository(): Repository<TEntity>;
|
|
11
|
+
distinct<TField extends keyof TEntity, TValue>(field: TField, condition: FindManyOptions<TEntity>): Promise<any[]>;
|
|
11
12
|
exists(id: TEntityId): Promise<boolean>;
|
|
12
13
|
existsBy(condition: FindOneOptions<TEntity>): Promise<boolean>;
|
|
13
14
|
get(id: TEntityId): Promise<TEntity | undefined>;
|
package/dist/cjs/types/platforms/nest/__test__/server/entities/appCompanies/appCompany.query.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare class AppCompanyQueryBuilder extends NestTypeOrmQueryBuilder<AppC
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppCompanyEntity> | FindOptionsWhere<AppCompanyEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppCompanySearchParameters): FindOptionsWhere<AppCompanyEntity> | FindOptionsWhere<AppCompanyEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppCompanySearchParameters): Promise<AppCompanyFacets
|
|
10
|
+
protected calculateFacets(request: AppCompanySearchParameters): Promise<AppCompanyFacets>;
|
|
11
11
|
}
|
package/dist/cjs/types/platforms/nest/__test__/server/entities/appDivisions/appDivision.query.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare class AppDivisionQueryBuilder extends NestTypeOrmQueryBuilder<App
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppDivisionEntity> | FindOptionsWhere<AppDivisionEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppDivisionSearchParameters): FindOptionsWhere<AppDivisionEntity> | FindOptionsWhere<AppDivisionEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppDivisionSearchParameters): Promise<AppDivisionFacets
|
|
10
|
+
protected calculateFacets(request: AppDivisionSearchParameters): Promise<AppDivisionFacets>;
|
|
11
11
|
}
|
|
@@ -7,5 +7,5 @@ export declare class AppOrganizationQueryBuilder extends NestTypeOrmQueryBuilder
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppOrganizationEntity> | FindOptionsWhere<AppOrganizationEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppOrganizationSearchParameters): FindOptionsWhere<AppOrganizationEntity> | FindOptionsWhere<AppOrganizationEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppOrganizationSearchParameters): Promise<AppOrganizationFacets
|
|
10
|
+
protected calculateFacets(request: AppOrganizationSearchParameters): Promise<AppOrganizationFacets>;
|
|
11
11
|
}
|
|
@@ -7,6 +7,6 @@ export declare class AppRoleQueryBuilder extends NestTypeOrmQueryBuilder<AppRole
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppRoleEntity> | FindOptionsWhere<AppRoleEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppRoleSearchParameters, context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppRoleEntity> | FindOptionsWhere<AppRoleEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppRoleSearchParameters): Promise<AppRoleFacets
|
|
10
|
+
protected calculateFacets(request: AppRoleSearchParameters): Promise<AppRoleFacets>;
|
|
11
11
|
protected getRelationsToLoad(request: AppRoleSearchParameters, context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsRelations<AppRoleEntity> | undefined;
|
|
12
12
|
}
|
package/dist/cjs/types/platforms/nest/__test__/server/entities/appTenants/appTenant.query.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare class AppTenantQueryBuilder extends NestTypeOrmQueryBuilder<AppTe
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppTenantEntity> | FindOptionsWhere<AppTenantEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppTenantSearchParameters): FindOptionsWhere<AppTenantEntity> | FindOptionsWhere<AppTenantEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppTenantSearchParameters): Promise<AppTenantFacets
|
|
10
|
+
protected calculateFacets(request: AppTenantSearchParameters): Promise<AppTenantFacets>;
|
|
11
11
|
}
|
|
@@ -7,5 +7,5 @@ export declare class AppUserGroupMemberQueryBuilder extends NestTypeOrmQueryBuil
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppUserGroupMemberEntity> | FindOptionsWhere<AppUserGroupMemberEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppUserGroupMemberSearchParameters): FindOptionsWhere<AppUserGroupMemberEntity> | FindOptionsWhere<AppUserGroupMemberEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppUserGroupMemberSearchParameters): Promise<AppUserGroupMemberFacets
|
|
10
|
+
protected calculateFacets(request: AppUserGroupMemberSearchParameters): Promise<AppUserGroupMemberFacets>;
|
|
11
11
|
}
|
package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserGroups/appUserGroup.query.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare class AppUserGroupQueryBuilder extends NestTypeOrmQueryBuilder<Ap
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppUserGroupEntity> | FindOptionsWhere<AppUserGroupEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppUserGroupSearchParameters): FindOptionsWhere<AppUserGroupEntity> | FindOptionsWhere<AppUserGroupEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppUserGroupSearchParameters): Promise<AppUserGroupFacets
|
|
10
|
+
protected calculateFacets(request: AppUserGroupSearchParameters): Promise<AppUserGroupFacets>;
|
|
11
11
|
}
|
|
@@ -7,5 +7,5 @@ export declare class AppUserProfileQueryBuilder extends NestTypeOrmQueryBuilder<
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppUserProfileEntity> | FindOptionsWhere<AppUserProfileEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppUserProfileSearchParameters): FindOptionsWhere<AppUserProfileEntity> | FindOptionsWhere<AppUserProfileEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppUserProfileSearchParameters): Promise<AppUserProfileFacets
|
|
10
|
+
protected calculateFacets(request: AppUserProfileSearchParameters): Promise<AppUserProfileFacets>;
|
|
11
11
|
}
|
package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserRoles/appUserRole.query.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export declare class AppUserRoleQueryBuilder extends NestTypeOrmQueryBuilder<App
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppUserRoleEntity> | FindOptionsWhere<AppUserRoleEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppUserRoleSearchParameters): FindOptionsWhere<AppUserRoleEntity> | FindOptionsWhere<AppUserRoleEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppUserRoleSearchParameters): Promise<AppUserRoleFacets
|
|
10
|
+
protected calculateFacets(request: AppUserRoleSearchParameters): Promise<AppUserRoleFacets>;
|
|
11
11
|
protected getRelationsToLoad(request: AppUserRoleSearchParameters, context: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsRelations<AppUserRoleEntity> | undefined;
|
|
12
12
|
}
|
|
@@ -7,5 +7,5 @@ export declare class AppUserQueryBuilder extends NestTypeOrmQueryBuilder<AppUser
|
|
|
7
7
|
constructor(registry: EntityManagerRegistry);
|
|
8
8
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<AppUserEntity> | FindOptionsWhere<AppUserEntity>[];
|
|
9
9
|
protected buildWhereClause(request: AppUserSearchParameters): FindOptionsWhere<AppUserEntity> | FindOptionsWhere<AppUserEntity>[];
|
|
10
|
-
protected calculateFacets(request: AppUserSearchParameters): Promise<AppUserFacets
|
|
10
|
+
protected calculateFacets(request: AppUserSearchParameters): Promise<AppUserFacets>;
|
|
11
11
|
}
|
|
@@ -2,6 +2,7 @@ import { IEntitySearchParameters, ISearchSorting, ISearchSortingField, SortDirec
|
|
|
2
2
|
import { IEntitiesSearchResults, IEntitiesSearchResultsPaging } from "../../../../../../models";
|
|
3
3
|
import { FooEntity } from "../../database/core/entities/foo.entity";
|
|
4
4
|
import { IEntitiesDeleteParameters } from "../../../../../../abstractions/commands";
|
|
5
|
+
import { NumberFacets } from "../../../../../../integrations/repository/typeorm/facets";
|
|
5
6
|
export type FooEntityId = string;
|
|
6
7
|
export type FooCreateData = Partial<FooEntity>;
|
|
7
8
|
export type FooUpdateData = Partial<FooEntity>;
|
|
@@ -9,6 +10,7 @@ export interface FooSearchParameters extends IEntitySearchParameters<FooSorting,
|
|
|
9
10
|
filters?: FooSearchFilters;
|
|
10
11
|
}
|
|
11
12
|
export interface FooFacets {
|
|
13
|
+
age: NumberFacets;
|
|
12
14
|
}
|
|
13
15
|
export interface FooSearchFilters {
|
|
14
16
|
minAge?: number;
|
|
@@ -10,5 +10,5 @@ export declare class FooQueryBuilder extends NestTypeOrmQueryBuilder<FooEntity,
|
|
|
10
10
|
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
11
11
|
protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
12
12
|
private buildAgeWhereClause;
|
|
13
|
-
protected calculateFacets(request: FooSearchParameters, context?: IAuthenticationContext<AppAuthContext>): Promise<FooFacets
|
|
13
|
+
protected calculateFacets(request: FooSearchParameters, context?: IAuthenticationContext<AppAuthContext>): Promise<FooFacets>;
|
|
14
14
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -21541,7 +21541,9 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21541
21541
|
// todo: execute inside read transaction in order to perform the three queries on the same dataset
|
|
21542
21542
|
const queryResults = await this.countQueryResults(request, context);
|
|
21543
21543
|
const results = await this.findPagedQueryResults(request, context);
|
|
21544
|
-
const facets =
|
|
21544
|
+
const facets = request.options?.includeFacets
|
|
21545
|
+
? await this.calculateFacets(request, context)
|
|
21546
|
+
: undefined;
|
|
21545
21547
|
return {
|
|
21546
21548
|
items: results,
|
|
21547
21549
|
request,
|
|
@@ -21553,6 +21555,9 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21553
21555
|
facets,
|
|
21554
21556
|
};
|
|
21555
21557
|
}
|
|
21558
|
+
async getFieldFacet() {
|
|
21559
|
+
this.getRepository().find({});
|
|
21560
|
+
}
|
|
21556
21561
|
async findPagedQueryResults(request, context) {
|
|
21557
21562
|
return await this.getRepository().find({
|
|
21558
21563
|
where: {
|
|
@@ -21582,15 +21587,15 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21582
21587
|
},
|
|
21583
21588
|
});
|
|
21584
21589
|
}
|
|
21585
|
-
|
|
21586
|
-
|
|
21587
|
-
|
|
21588
|
-
|
|
21589
|
-
|
|
21590
|
-
|
|
21591
|
-
|
|
21592
|
-
|
|
21593
|
-
|
|
21590
|
+
async calculateFacet(field, request, context) {
|
|
21591
|
+
const values = await this.getRepository().distinct(field, {
|
|
21592
|
+
...(context ? this.buildContextFilter(context) : {}),
|
|
21593
|
+
...this.buildWhereClause(request),
|
|
21594
|
+
});
|
|
21595
|
+
return {
|
|
21596
|
+
values,
|
|
21597
|
+
};
|
|
21598
|
+
}
|
|
21594
21599
|
getRepository() {
|
|
21595
21600
|
if (!this.repository) {
|
|
21596
21601
|
this.repository = this.services.resolveRepository();
|
|
@@ -21607,6 +21612,20 @@ class TypeOrmRepository {
|
|
|
21607
21612
|
getInnerRepository() {
|
|
21608
21613
|
return this.innerRepository;
|
|
21609
21614
|
}
|
|
21615
|
+
async distinct(field, condition) {
|
|
21616
|
+
this.logger.debug("Getting distinct values", { field });
|
|
21617
|
+
const columnName = this.innerRepository.metadata.findColumnWithPropertyName(field)?.databaseName;
|
|
21618
|
+
if (!columnName) {
|
|
21619
|
+
throw new Error(`Column '${field}' not found`);
|
|
21620
|
+
}
|
|
21621
|
+
const results = await this.innerRepository
|
|
21622
|
+
.createQueryBuilder()
|
|
21623
|
+
.select(`DISTINCT ${columnName}`)
|
|
21624
|
+
.where(condition)
|
|
21625
|
+
.orderBy(columnName)
|
|
21626
|
+
.getRawMany();
|
|
21627
|
+
return results.map((x) => x[columnName]);
|
|
21628
|
+
}
|
|
21610
21629
|
async exists(id) {
|
|
21611
21630
|
if (isNullOrUndefined(id)) {
|
|
21612
21631
|
throw new Error("Invalid 'id' parameter.");
|