import { SchemaModel } from '@verb/src/libs/shared/base/base.model'; import { SubSchema } from '@verb/src/libs/shared/json-schema-validator/schema-types'; export class StreamMetricsModel implements SchemaModel { public createdAt = new Date(); public endedAt: Date | null = null; public startedAt: Date | null = null; public constructor(streamMetricsSchema?: StreamMetricsSchema) { if (streamMetricsSchema) { this.fromSchema(streamMetricsSchema); } } public fromSchema(streamMetricsSchema: StreamMetricsSchema) { this.createdAt = new Date(streamMetricsSchema.created_at); this.endedAt = streamMetricsSchema.ended_at ? new Date(streamMetricsSchema.ended_at) : null; this.startedAt = streamMetricsSchema.started_at ? new Date(streamMetricsSchema.started_at) : null; } public toSchema(): StreamMetricsSchema { return { created_at: this.createdAt.toUTCString(), ended_at: this.endedAt ? this.endedAt.toUTCString() : null, started_at: this.startedAt ? this.startedAt.toUTCString() : null, }; } } export interface StreamMetricsSchema { created_at: string; ended_at: string | null; started_at: string | null; } export const streamMetricsValidationSchema: SubSchema = { additionalProperties: false, description: 'Stream Metrics Schema Validation', properties: { created_at: { description: 'Created at', type: 'string', }, ended_at: { description: 'Ended at', type: 'string', }, started_at: { description: 'Started at', type: 'string', }, }, required: ['created_at'], type: 'object', };