import SeoFields from '../entity/SeoFields'; import SeoFieldsAdapterInterface from './SeoFieldsAdapterInterface'; import FileFactoryInterface from '../../File/factories/FileFactoryInterface'; export default class SeoFieldsAdapter implements SeoFieldsAdapterInterface { protected imageTransformer: FileFactoryInterface; constructor(imageTransformer: FileFactoryInterface) { this.imageTransformer = imageTransformer; } adapt(json: any, instance: SeoFields): SeoFields { instance.title = json.title; instance.description = json.description; // Ternary stuff because of split of empty string is array of empty string -> [""]. instance.keywords = json.keywords ? json.keywords.split(',') : []; instance.images = (json.images || []).map(each => this.imageTransformer.transformToEntity(each)); return instance; } prepare(instance: SeoFields) { const images = (instance.images || []).map(each => this.imageTransformer.transformToPayload(each)); return { images, seo_title: instance.title, meta_description: instance.description, keywords: instance.keywords, }; } transformToEntity(json: any): SeoFields { return this.adapt(json, new SeoFields()); } transformToPayload(instance: SeoFields): any { return this.prepare(instance); } }