image-optimize.service.ts 890 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { InjectQueue } from '@nestjs/bull';
  2. import { Injectable } from '@nestjs/common';
  3. import { Queue } from 'bull';
  4. import { randomUUID } from 'crypto';
  5. import { AssetEntity } from '../../api-v1/asset/entities/asset.entity';
  6. @Injectable()
  7. export class AssetOptimizeService {
  8. constructor(@InjectQueue('optimize') private optimizeQueue: Queue) {}
  9. public async resizeImage(savedAsset: AssetEntity) {
  10. const job = await this.optimizeQueue.add(
  11. 'resize-image',
  12. {
  13. savedAsset,
  14. },
  15. { jobId: randomUUID() },
  16. );
  17. return {
  18. jobId: job.id,
  19. };
  20. }
  21. public async getVideoThumbnail(savedAsset: AssetEntity, filename: string) {
  22. const job = await this.optimizeQueue.add(
  23. 'get-video-thumbnail',
  24. {
  25. savedAsset,
  26. filename,
  27. },
  28. { jobId: randomUUID() },
  29. );
  30. return {
  31. jobId: job.id,
  32. };
  33. }
  34. }