|
@@ -1,14 +1,21 @@
|
|
|
|
|
+import { Logger } from '@nestjs/common';
|
|
|
import { Args, Parent, ResolveField, Resolver } from '@nestjs/graphql';
|
|
import { Args, Parent, ResolveField, Resolver } from '@nestjs/graphql';
|
|
|
-import { CollectionBreadcrumb, ProductVariantListOptions } from '@vendure/common/lib/generated-types';
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ CollectionBreadcrumb,
|
|
|
|
|
+ ConfigurableOperation,
|
|
|
|
|
+ ProductVariantListOptions,
|
|
|
|
|
+} from '@vendure/common/lib/generated-types';
|
|
|
import { PaginatedList } from '@vendure/common/lib/shared-types';
|
|
import { PaginatedList } from '@vendure/common/lib/shared-types';
|
|
|
|
|
|
|
|
import { ListQueryOptions } from '../../../common/types/common-types';
|
|
import { ListQueryOptions } from '../../../common/types/common-types';
|
|
|
import { Translated } from '../../../common/types/locale-types';
|
|
import { Translated } from '../../../common/types/locale-types';
|
|
|
|
|
+import { CollectionFilter } from '../../../config/index';
|
|
|
import { Asset, Collection, Product, ProductVariant } from '../../../entity';
|
|
import { Asset, Collection, Product, ProductVariant } from '../../../entity';
|
|
|
import { LocaleStringHydrator } from '../../../service/helpers/locale-string-hydrator/locale-string-hydrator';
|
|
import { LocaleStringHydrator } from '../../../service/helpers/locale-string-hydrator/locale-string-hydrator';
|
|
|
import { AssetService } from '../../../service/services/asset.service';
|
|
import { AssetService } from '../../../service/services/asset.service';
|
|
|
import { CollectionService } from '../../../service/services/collection.service';
|
|
import { CollectionService } from '../../../service/services/collection.service';
|
|
|
import { ProductVariantService } from '../../../service/services/product-variant.service';
|
|
import { ProductVariantService } from '../../../service/services/product-variant.service';
|
|
|
|
|
+import { ConfigurableOperationCodec } from '../../common/configurable-operation-codec';
|
|
|
import { ApiType } from '../../common/get-api-type';
|
|
import { ApiType } from '../../common/get-api-type';
|
|
|
import { RequestContext } from '../../common/request-context';
|
|
import { RequestContext } from '../../common/request-context';
|
|
|
import { Api } from '../../decorators/api.decorator';
|
|
import { Api } from '../../decorators/api.decorator';
|
|
@@ -22,6 +29,7 @@ export class CollectionEntityResolver {
|
|
|
private collectionService: CollectionService,
|
|
private collectionService: CollectionService,
|
|
|
private assetService: AssetService,
|
|
private assetService: AssetService,
|
|
|
private localeStringHydrator: LocaleStringHydrator,
|
|
private localeStringHydrator: LocaleStringHydrator,
|
|
|
|
|
+ private configurableOperationCodec: ConfigurableOperationCodec,
|
|
|
) {}
|
|
) {}
|
|
|
|
|
|
|
|
@ResolveField()
|
|
@ResolveField()
|
|
@@ -118,4 +126,19 @@ export class CollectionEntityResolver {
|
|
|
async assets(@Ctx() ctx: RequestContext, @Parent() collection: Collection): Promise<Asset[] | undefined> {
|
|
async assets(@Ctx() ctx: RequestContext, @Parent() collection: Collection): Promise<Asset[] | undefined> {
|
|
|
return this.assetService.getEntityAssets(ctx, collection);
|
|
return this.assetService.getEntityAssets(ctx, collection);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @ResolveField()
|
|
|
|
|
+ filters(@Ctx() ctx: RequestContext, @Parent() collection: Collection): ConfigurableOperation[] {
|
|
|
|
|
+ try {
|
|
|
|
|
+ return this.configurableOperationCodec.encodeConfigurableOperationIds(
|
|
|
|
|
+ CollectionFilter,
|
|
|
|
|
+ collection.filters,
|
|
|
|
|
+ );
|
|
|
|
|
+ } catch (e: any) {
|
|
|
|
|
+ Logger.error(
|
|
|
|
|
+ `Could not decode the collection filter arguments for "${collection.name}" (id: ${collection.id}). Error message: ${e.message}`,
|
|
|
|
|
+ );
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|