import { SchemaModel } from '@verb/src/libs/shared/base/base.model'; import { SubSchema } from '@verb/src/libs/shared/json-schema-validator/schema-types'; export class CoreConfigurationMediaModel implements SchemaModel { public description: string | null = null; public thumbnailUrl: string | null = null; public title = ''; public type: string[] = []; public url = ''; public assetId?: string; public constructor(coreConfigurationMediaSchema?: CoreConfigurationMediaSchema) { if (coreConfigurationMediaSchema) { this.fromSchema(coreConfigurationMediaSchema); } } public fromSchema(schema: CoreConfigurationMediaSchema) { this.assetId = schema.asset_id; this.description = schema.description; this.thumbnailUrl = schema.thumbnail_url; this.title = schema.title; this.type = schema.type; this.url = schema.url; } public toSchema(): CoreConfigurationMediaSchema { return { asset_id: this.assetId, description: this.description, thumbnail_url: this.thumbnailUrl, title: this.title, type: this.type, url: this.url, }; } } export interface CoreConfigurationMediaSchema { description: string | null; thumbnail_url: string | null; title: string; type: string[]; url: string; asset_id?: string; } export const coreConfigurationMediaValidationSchema: SubSchema = { additionalProperties: true, description: 'Core Configuration Media Validation Schema', properties: { asset_id: { description: 'Core config media asset id', minLength: 1, type: 'string', }, description: { description: 'Core config media description', type: ['string', 'null'], }, thumbnail_url: { description: 'Core config media thumbnail', type: ['string', 'null'], }, title: { description: 'Core config media title', minLength: 1, type: 'string', }, type: { description: 'Core config media types', items: { type: 'string', }, minLength: 1, type: 'array', }, url: { description: 'Core config media url', minLength: 1, type: 'string', }, }, required: ['asset_id', 'title', 'type', 'url'], type: 'object', };