diff --git a/modules/hudozka-api/src/core/Page.ts b/modules/hudozka-api/src/core/Page.ts index 90ca78e0..c19a4f74 100644 --- a/modules/hudozka-api/src/core/Page.ts +++ b/modules/hudozka-api/src/core/Page.ts @@ -1,6 +1,7 @@ import Data from './Data' import { find as storeFind, findOne, total } from '../lib/store' import Image from './Image' +import { Tag } from './Tag' const store = () => Data.getStore('Page') @@ -37,6 +38,8 @@ export default class Page { public url: string public content: any public title: any + public date: Date + public tags: Tag[] public data: any public images: any public documents: any @@ -52,27 +55,14 @@ export default class Page { this.content = data.content this.title = data.title this.data = data.data + this.date = data.date this.images = data.images this.documents = data.documents this.preview = data.preview this.tokens = data.tokens + this.tags = (data.tags || []).map(x => new Tag(x)) this.description = data.description } - - plain() { - return { - id: this.id, - images: this.images, - documents: this.documents, - data: this.data, - title: this.title, - content: this.content, - hash: this.hash, - file: this.file, - preview: this.preview, - url: this.url, - } - } } const previewFromImage = (imgs = []) => imgs.length diff --git a/modules/hudozka-api/src/factory/image.ts b/modules/hudozka-api/src/factory/image.ts index 717ec47b..828eaebc 100644 --- a/modules/hudozka-api/src/factory/image.ts +++ b/modules/hudozka-api/src/factory/image.ts @@ -1,6 +1,29 @@ import ImageArtifactType from '../core/ImageArtifactType' -export function encodeImage(image) { +export type ImageArtifactDto = { + height: number + width: number + src: string + set: Array<{ + density: number + url: string + }> +} + +export type ImageDto = { + artifacts: { + original: ImageArtifactDto, + large: ImageArtifactDto, + big: ImageArtifactDto, + medium: ImageArtifactDto, + small: ImageArtifactDto, + fb: ImageArtifactDto, + }, + hash: string + file: string +} + +export function encodeImage(image): ImageDto { const artifacts = [ ImageArtifactType.SMALL, ImageArtifactType.MEDIUM, @@ -17,8 +40,8 @@ export function encodeImage(image) { }, {}) return { - artifacts, + artifacts: artifacts as any, hash: image.hash, - file: image.file, + file: image.file, } } diff --git a/modules/hudozka-api/src/factory/page.ts b/modules/hudozka-api/src/factory/page.ts index 003887ae..66272eab 100644 --- a/modules/hudozka-api/src/factory/page.ts +++ b/modules/hudozka-api/src/factory/page.ts @@ -1,9 +1,29 @@ -import { encodeImage } from './image' +import { encodeImage, ImageDto } from './image' import Page from '../core/Page' import { Breadcrumb } from '../types' +import { Tag } from '../core/Tag' -export function encodePage(page: Page, breadcrumb: Breadcrumb) { +type Token = { + token: string + data: any +} + +type PageDto = { + id: string + title: string + date?: string + url: string + data: string + description: string + preview?: ImageDto + tokens: Token[] + tags: Tag[] + breadcrumb: Breadcrumb +} + +export function encodePage(page: Page, breadcrumb: Breadcrumb): PageDto { const preview = page.preview ? encodeImage(page.preview) : null + const date = page.date ? page.date.toString() : null return { id: page.id, @@ -11,8 +31,10 @@ export function encodePage(page: Page, breadcrumb: Breadcrumb) { url: page.url, data: page.data, description: page.description, - preview, tokens: page.tokens, + tags: page.tags, + preview, + date, breadcrumb, } }