product-bundle-admin.resolver.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import { DeletionResponse, Permission } from '@vendure/common/lib/generated-types';
  3. import {
  4. Allow,
  5. Ctx,
  6. ID,
  7. ListQueryOptions,
  8. PaginatedList,
  9. RelationPaths,
  10. Relations,
  11. RequestContext,
  12. Transaction,
  13. } from '@vendure/core';
  14. import { productBundlePermission } from '../constants';
  15. import { ProductBundle } from '../entities/product-bundle.entity';
  16. import { ProductBundleItemService } from '../services/product-bundle-item.service';
  17. import { ProductBundleService } from '../services/product-bundle.service';
  18. import {
  19. CreateProductBundleInput,
  20. CreateProductBundleItemInput,
  21. UpdateProductBundleInput,
  22. UpdateProductBundleItemInput,
  23. } from '../types';
  24. @Resolver()
  25. export class ProductBundleAdminResolver {
  26. constructor(
  27. private productBundleService: ProductBundleService,
  28. private productBundleItemService: ProductBundleItemService,
  29. ) {}
  30. @Query()
  31. @Allow(productBundlePermission.Read)
  32. async productBundle(
  33. @Ctx() ctx: RequestContext,
  34. @Args() args: { id: ID },
  35. @Relations(ProductBundle) relations: RelationPaths<ProductBundle>,
  36. ): Promise<ProductBundle | null> {
  37. return this.productBundleService.findOne(ctx, args.id, relations);
  38. }
  39. @Query()
  40. @Allow(productBundlePermission.Read)
  41. async productBundles(
  42. @Ctx() ctx: RequestContext,
  43. @Args() args: { options: ListQueryOptions<ProductBundle> },
  44. @Relations(ProductBundle) relations: RelationPaths<ProductBundle>,
  45. ): Promise<PaginatedList<ProductBundle>> {
  46. return this.productBundleService.findAll(ctx, args.options || undefined, relations);
  47. }
  48. @Mutation()
  49. @Transaction()
  50. @Allow(productBundlePermission.Create)
  51. async createProductBundle(
  52. @Ctx() ctx: RequestContext,
  53. @Args() args: { input: CreateProductBundleInput },
  54. ): Promise<ProductBundle> {
  55. return this.productBundleService.create(ctx, args.input);
  56. }
  57. @Mutation()
  58. @Transaction()
  59. @Allow(productBundlePermission.Update)
  60. async updateProductBundle(
  61. @Ctx() ctx: RequestContext,
  62. @Args() args: { input: UpdateProductBundleInput },
  63. ): Promise<ProductBundle> {
  64. return this.productBundleService.update(ctx, args.input);
  65. }
  66. @Mutation()
  67. @Transaction()
  68. @Allow(productBundlePermission.Delete)
  69. async deleteProductBundle(
  70. @Ctx() ctx: RequestContext,
  71. @Args() args: { id: ID },
  72. ): Promise<DeletionResponse> {
  73. return this.productBundleService.delete(ctx, args.id);
  74. }
  75. @Mutation()
  76. @Transaction()
  77. @Allow(productBundlePermission.Create)
  78. createProductBundleItem(
  79. @Ctx() ctx: RequestContext,
  80. @Args() args: { input: CreateProductBundleItemInput },
  81. ) {
  82. return this.productBundleItemService.createProductBundleItem(ctx, args.input);
  83. }
  84. @Mutation()
  85. @Transaction()
  86. @Allow(productBundlePermission.Update)
  87. updateProductBundleItem(
  88. @Ctx() ctx: RequestContext,
  89. @Args() args: { input: UpdateProductBundleItemInput },
  90. ) {
  91. return this.productBundleItemService.updateProductBundleItem(ctx, args.input);
  92. }
  93. @Mutation()
  94. @Transaction()
  95. @Allow(productBundlePermission.Delete)
  96. deleteProductBundleItem(@Ctx() ctx: RequestContext, @Args() args: { id: ID }) {
  97. return this.productBundleItemService.delete(ctx, args.id);
  98. }
  99. }