entity-hydrate-plugin.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* tslint:disable:no-non-null-assertion */
  2. import { Args, Query, Resolver } from '@nestjs/graphql';
  3. import {
  4. Ctx,
  5. EntityHydrator,
  6. ID,
  7. PluginCommonModule,
  8. Product,
  9. ProductVariant,
  10. ProductVariantService,
  11. RequestContext,
  12. TransactionalConnection,
  13. VendurePlugin,
  14. } from '@vendure/core';
  15. import gql from 'graphql-tag';
  16. @Resolver()
  17. class TestResolver {
  18. constructor(
  19. private productVariantService: ProductVariantService,
  20. private connection: TransactionalConnection,
  21. private entityHydrator: EntityHydrator,
  22. ) {}
  23. @Query()
  24. async hydrateTest(@Ctx() ctx: RequestContext, @Args() args: { id: ID }) {
  25. const product = await this.connection.getRepository(ctx, Product).findOne(args.id, {
  26. relations: ['featuredAsset'],
  27. });
  28. await this.entityHydrator.hydrate(ctx, product!, {
  29. relations: ['facetValues.facet', 'variants.options', 'assets'],
  30. });
  31. return product;
  32. }
  33. }
  34. // A plugin to explore solutions to https://github.com/vendure-ecommerce/vendure/issues/1103
  35. @VendurePlugin({
  36. imports: [PluginCommonModule],
  37. adminApiExtensions: {
  38. schema: gql`
  39. extend type Query {
  40. hydrateTest(id: ID!): JSON
  41. }
  42. `,
  43. resolvers: [TestResolver],
  44. },
  45. })
  46. export class EntityHydratePlugin {}