import { Inject, Injectable } from '@nestjs/common'; import { FILE_REPOSITORY, type IFileRepository } from '../../../domain/repositories/file.repository.interface.js'; import { GetFilesQuery } from './get-files.query.js'; import { FileDto } from '../../dto/file.dto.js'; import { FileApplicationMapper } from '../../mappers/file-application.mapper.js'; /** * Метаданные файлов по id — для модулей-владельцев, раскрывающих свои связи * в FileDto (по аналогии с GetUsersUseCase). Доступ проверяет вызывающий: * он отдаёт только файлы своих сущностей, видимых пользователю. */ @Injectable() export class GetFilesUseCase { constructor( @Inject(FILE_REPOSITORY) private readonly fileRepository: IFileRepository, ) {} async execute(query: GetFilesQuery): Promise { const ids = [...new Set(query.ids)]; const files = await this.fileRepository.findByIds(ids); return files.map(FileApplicationMapper.toDto); } }