hydration-test-plugin.ts 1.4 KB

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