import { BaseModel } from '@verb/src/libs/shared/base/base.model'; import { StreamMetricsModel, StreamMetricsSchema, StreamSchema, } from '@verb/src/libs/stream/stream-metadata'; export class StreamLibraryInstanceModel implements BaseModel { public attendeeCount: number | null = null; public description: string | null = null; public metrics = new StreamMetricsModel(); public streamInstanceId: string | null = null; public title: string | null = null; public constructor(streamLibraryInstanceSchema?: StreamLibraryInstanceSchema) { if (streamLibraryInstanceSchema) { this.fromSchema(streamLibraryInstanceSchema); } } public fromSchema(streamLibraryInstanceSchema: StreamLibraryInstanceSchema) { this.attendeeCount = streamLibraryInstanceSchema.attendee_count; this.description = streamLibraryInstanceSchema.description; this.metrics = new StreamMetricsModel(streamLibraryInstanceSchema.metrics); this.streamInstanceId = streamLibraryInstanceSchema.stream_instance_id; this.title = streamLibraryInstanceSchema.title; } public fromStreamSchema(streamSchema: StreamSchema) { this.attendeeCount = streamSchema.metadata.attendees.length; this.description = streamSchema.metadata.configuration.description; this.metrics = new StreamMetricsModel(streamSchema.metadata.metrics); this.streamInstanceId = streamSchema.stream_instance_id; this.title = streamSchema.metadata.configuration.title; } public toSchema(): StreamLibraryInstanceSchema { return { attendee_count: this.attendeeCount, description: this.description, metrics: this.metrics.toSchema(), stream_instance_id: this.streamInstanceId, title: this.title, }; } } export interface StreamLibraryInstanceSchema { attendee_count: number | null; description: string | null; metrics: StreamMetricsSchema; stream_instance_id: string | null; title: string | null; }