zone.resolver.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import {
  3. DeletionResponse,
  4. MutationAddMembersToZoneArgs,
  5. MutationCreateZoneArgs,
  6. MutationDeleteZoneArgs,
  7. MutationDeleteZonesArgs,
  8. MutationRemoveMembersFromZoneArgs,
  9. MutationUpdateZoneArgs,
  10. Permission,
  11. QueryZoneArgs,
  12. } from '@vendure/common/lib/generated-types';
  13. import { Zone } from '../../../entity/zone/zone.entity';
  14. import { ZoneService } from '../../../service/services/zone.service';
  15. import { RequestContext } from '../../common/request-context';
  16. import { Allow } from '../../decorators/allow.decorator';
  17. import { Ctx } from '../../decorators/request-context.decorator';
  18. import { Transaction } from '../../decorators/transaction.decorator';
  19. @Resolver('Zone')
  20. export class ZoneResolver {
  21. constructor(private zoneService: ZoneService) {}
  22. @Query()
  23. @Allow(Permission.ReadSettings, Permission.ReadZone)
  24. zones(@Ctx() ctx: RequestContext): Promise<Zone[]> {
  25. return this.zoneService.findAll(ctx);
  26. }
  27. @Query()
  28. @Allow(Permission.ReadSettings, Permission.ReadZone)
  29. async zone(@Ctx() ctx: RequestContext, @Args() args: QueryZoneArgs): Promise<Zone | undefined> {
  30. return this.zoneService.findOne(ctx, args.id);
  31. }
  32. @Transaction()
  33. @Mutation()
  34. @Allow(Permission.CreateSettings, Permission.CreateZone)
  35. async createZone(@Ctx() ctx: RequestContext, @Args() args: MutationCreateZoneArgs): Promise<Zone> {
  36. return this.zoneService.create(ctx, args.input);
  37. }
  38. @Transaction()
  39. @Mutation()
  40. @Allow(Permission.UpdateSettings, Permission.UpdateZone)
  41. async updateZone(@Ctx() ctx: RequestContext, @Args() args: MutationUpdateZoneArgs): Promise<Zone> {
  42. return this.zoneService.update(ctx, args.input);
  43. }
  44. @Transaction()
  45. @Mutation()
  46. @Allow(Permission.DeleteSettings, Permission.DeleteZone)
  47. async deleteZone(
  48. @Ctx() ctx: RequestContext,
  49. @Args() args: MutationDeleteZoneArgs,
  50. ): Promise<DeletionResponse> {
  51. return this.zoneService.delete(ctx, args.id);
  52. }
  53. @Transaction()
  54. @Mutation()
  55. @Allow(Permission.DeleteSettings, Permission.DeleteZone)
  56. async deleteZones(
  57. @Ctx() ctx: RequestContext,
  58. @Args() args: MutationDeleteZonesArgs,
  59. ): Promise<DeletionResponse[]> {
  60. return Promise.all(args.ids.map(id => this.zoneService.delete(ctx, id)));
  61. }
  62. @Transaction()
  63. @Mutation()
  64. @Allow(Permission.UpdateSettings, Permission.UpdateZone)
  65. async addMembersToZone(
  66. @Ctx() ctx: RequestContext,
  67. @Args() args: MutationAddMembersToZoneArgs,
  68. ): Promise<Zone> {
  69. return this.zoneService.addMembersToZone(ctx, args);
  70. }
  71. @Transaction()
  72. @Mutation()
  73. @Allow(Permission.UpdateSettings, Permission.UpdateZone)
  74. async removeMembersFromZone(
  75. @Ctx() ctx: RequestContext,
  76. @Args() args: MutationRemoveMembersFromZoneArgs,
  77. ): Promise<Zone> {
  78. return this.zoneService.removeMembersFromZone(ctx, args);
  79. }
  80. }