collection-entity.resolver.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { Args, Parent, ResolveProperty, Resolver } from '@nestjs/graphql';
  2. import { CollectionBreadcrumb, ProductVariantListOptions } from '../../../../../shared/generated-types';
  3. import { PaginatedList } from '../../../../../shared/shared-types';
  4. import { Translated } from '../../../common/types/locale-types';
  5. import { Collection, ProductVariant } from '../../../entity';
  6. import { CollectionService } from '../../../service/services/collection.service';
  7. import { ProductVariantService } from '../../../service/services/product-variant.service';
  8. import { RequestContext } from '../../common/request-context';
  9. import { Ctx } from '../../decorators/request-context.decorator';
  10. @Resolver('Collection')
  11. export class CollectionEntityResolver {
  12. constructor(
  13. private productVariantService: ProductVariantService,
  14. private collectionService: CollectionService,
  15. ) {}
  16. @ResolveProperty()
  17. async productVariants(
  18. @Ctx() ctx: RequestContext,
  19. @Parent() collection: Collection,
  20. @Args() args: { options: ProductVariantListOptions },
  21. ): Promise<PaginatedList<Translated<ProductVariant>>> {
  22. return this.productVariantService.getVariantsByCollectionId(ctx, collection.id, args.options);
  23. }
  24. @ResolveProperty()
  25. async breadcrumbs(
  26. @Ctx() ctx: RequestContext,
  27. @Parent() collection: Collection,
  28. ): Promise<CollectionBreadcrumb[]> {
  29. return this.collectionService.getBreadcrumbs(ctx, collection) as any;
  30. }
  31. @ResolveProperty()
  32. async parent(@Ctx() ctx: RequestContext, @Parent() collection: Collection): Promise<Collection> {
  33. if (collection.parent) {
  34. return collection.parent;
  35. }
  36. return this.collectionService.getParent(ctx, collection.id) as any;
  37. }
  38. }