asset.resolver.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import {
  3. AssetQueryArgs,
  4. AssetsQueryArgs,
  5. CreateAssetsMutationArgs,
  6. Permission,
  7. } from 'shared/generated-types';
  8. import { PaginatedList } from 'shared/shared-types';
  9. import { Asset } from '../../entity/asset/asset.entity';
  10. import { AssetService } from '../../service/providers/asset.service';
  11. import { Allow } from '../common/auth-guard';
  12. @Resolver('Assets')
  13. export class AssetResolver {
  14. constructor(private assetService: AssetService) {}
  15. /**
  16. * Returns a list of Assets
  17. */
  18. @Query()
  19. @Allow(Permission.ReadCatalog)
  20. async asset(@Args() args: AssetQueryArgs): Promise<Asset | undefined> {
  21. return this.assetService.findOne(args.id);
  22. }
  23. /**
  24. * Returns a list of Assets
  25. */
  26. @Query()
  27. @Allow(Permission.ReadCatalog)
  28. async assets(@Args() args: AssetsQueryArgs): Promise<PaginatedList<Asset>> {
  29. return this.assetService.findAll(args.options || undefined);
  30. }
  31. /**
  32. * Create a new Asset
  33. */
  34. @Mutation()
  35. @Allow(Permission.CreateCatalog)
  36. async createAssets(@Args() args: CreateAssetsMutationArgs): Promise<Asset[]> {
  37. return Promise.all(args.input.map(asset => this.assetService.create(asset)));
  38. }
  39. }