import { SchemaModel } from '@verb/src/libs/shared/base/base.model'; import { SubSchema } from '@verb/src/libs/shared/json-schema-validator/schema-types'; import { StreamMessageFlagsModel, StreamMessageFlagsSchema, streamMessageFlagValidationSchema, } from './stream-message-flags.model'; export class StreamMessageModel implements SchemaModel { public attendeeId = ''; public flags = new StreamMessageFlagsModel(); public message = ''; public messageId = ''; public constructor(streamMessageSchema?: StreamMessageSchema) { if (streamMessageSchema) { this.fromSchema(streamMessageSchema); } } public fromSchema(streamMessageSchema: StreamMessageSchema) { this.attendeeId = streamMessageSchema.attendee_id; this.flags = new StreamMessageFlagsModel(streamMessageSchema.flags); this.message = streamMessageSchema.message; this.messageId = streamMessageSchema.message_id; } public toSchema(): StreamMessageSchema { return { attendee_id: this.attendeeId, flags: this.flags.toSchema(), message: this.message, message_id: this.messageId, }; } } export interface StreamMessageSchema { attendee_id: string; flags: StreamMessageFlagsSchema; message: string; message_id: string; } export const streamMessageValidationSchema: SubSchema = { additionalProperties: false, description: 'Stream Message Schema Validation', properties: { attendee_id: { description: 'Attendee ID', minLength: 1, type: 'string', }, flags: streamMessageFlagValidationSchema, message: { description: 'Message', minLength: 1, type: 'string', }, message_id: { description: 'Message ID', minLength: 1, type: 'string', }, }, required: ['attendee_id', 'flags', 'message', 'message_id'], type: 'object', };