import type { Router } from 'mediasoup/types' import type { Channel as DbChannel } from '../../../prisma/generated-client/client.ts' import { Channel } from './Channel.ts' export class ChannelManager { private channels = new Map() private mediasoupRouter: Router constructor(mediasoupRouter: Router) { this.mediasoupRouter = mediasoupRouter } async create(newChannel: Channel | DbChannel) { if (newChannel instanceof Channel) { this.channels.set(newChannel.id, newChannel) } else { this.channels.set(newChannel.id, await Channel.create(newChannel.id, newChannel.persistent, this.mediasoupRouter)) } } get(id: string) { return this.channels.get(id) } delete(id: string) { this.channels.delete(id) } get all() { return Array.from(this.channels.values()) } }