Spaces:
Runtime error
Runtime error
| import { InstanceDto } from '@api/dto/instance.dto'; | |
| import { MediaDto } from '@api/integrations/storage/s3/dto/media.dto'; | |
| import { getObjectUrl } from '@api/integrations/storage/s3/libs/minio.server'; | |
| import { PrismaRepository } from '@api/repository/repository.service'; | |
| import { Logger } from '@config/logger.config'; | |
| import { BadRequestException } from '@exceptions'; | |
| export class S3Service { | |
| constructor(private readonly prismaRepository: PrismaRepository) {} | |
| private readonly logger = new Logger('S3Service'); | |
| public async getMedia(instance: InstanceDto, query?: MediaDto) { | |
| try { | |
| const where: any = { | |
| instanceId: instance.instanceId, | |
| ...query, | |
| }; | |
| const media = await this.prismaRepository.media.findMany({ | |
| where, | |
| select: { | |
| id: true, | |
| fileName: true, | |
| type: true, | |
| mimetype: true, | |
| createdAt: true, | |
| Message: true, | |
| }, | |
| }); | |
| if (!media || media.length === 0) { | |
| throw 'Media not found'; | |
| } | |
| return media; | |
| } catch (error) { | |
| throw new BadRequestException(error); | |
| } | |
| } | |
| public async getMediaUrl(instance: InstanceDto, data: MediaDto) { | |
| const media = (await this.getMedia(instance, { id: data.id }))[0]; | |
| const mediaUrl = await getObjectUrl(media.fileName, data.expiry); | |
| return { | |
| mediaUrl, | |
| ...media, | |
| }; | |
| } | |
| } | |