product-review-entity.resolver.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Parent, ResolveField, Resolver } from '@nestjs/graphql';
  2. import {
  3. Ctx,
  4. Product,
  5. ProductVariant,
  6. RequestContext,
  7. TransactionalConnection,
  8. translateDeep,
  9. } from '@vendure/core';
  10. import { ProductReview } from '../entities/product-review.entity';
  11. @Resolver('ProductReview')
  12. export class ProductReviewEntityResolver {
  13. constructor(private connection: TransactionalConnection) {}
  14. @ResolveField()
  15. async product(@Parent() review: ProductReview, @Ctx() ctx: RequestContext) {
  16. let product: Product | null = review.product;
  17. if (!product) {
  18. const reviewWithProduct = await this.connection.getRepository(ctx, ProductReview).findOne({
  19. where: { id: review.id },
  20. relations: {
  21. product: true,
  22. },
  23. });
  24. if (reviewWithProduct) {
  25. product = reviewWithProduct.product;
  26. }
  27. }
  28. if (product) {
  29. return translateDeep(product, ctx.languageCode);
  30. }
  31. }
  32. @ResolveField()
  33. async productVariant(@Parent() review: ProductReview, @Ctx() ctx: RequestContext) {
  34. let productVariant: ProductVariant | null = review.productVariant;
  35. if (!productVariant) {
  36. const reviewWithProductVariant = await this.connection.getRepository(ctx, ProductReview).findOne({
  37. where: { id: review.id },
  38. relations: {
  39. productVariant: true,
  40. },
  41. });
  42. if (reviewWithProductVariant) {
  43. productVariant = reviewWithProductVariant.productVariant;
  44. }
  45. }
  46. if (productVariant) {
  47. return translateDeep(productVariant, ctx.languageCode);
  48. }
  49. }
  50. }