import { ReadStreamCreatable } from '../Interface/read-stream-creatable.interface'; import { FileEntity } from '../../VideoFiles/Entity/file.entity'; import { Inject, Injectable } from '@nestjs/common'; import { ReadStreamCreatableProviderInterface } from './read-stream-creatable-provider.interface'; export const ReadStreamCreatableProviders = 'ReadStreamCreatableProviders'; @Injectable() export class ReadStreamCreatableProvider { constructor( @Inject(ReadStreamCreatableProviders) private providers: Array, ) {} getReadStreamCreatable(fileEntity: FileEntity): Promise { for (const provider of this.providers) { if (provider.supports(fileEntity)) { return provider.getReadStreamCreatable(fileEntity); } } } }