From eed3a3c0079e0445ae53df4dbd465b1c2200f96d Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Tue, 15 Oct 2019 01:27:43 +0300 Subject: [PATCH] Album model to ts --- src/core/Album.js | 65 ----------------------------------------------- src/core/Album.ts | 63 +++++++++++++++++++++++++++++++++++++++++++++ src/core/db.ts | 2 +- 3 files changed, 64 insertions(+), 66 deletions(-) delete mode 100644 src/core/Album.js create mode 100644 src/core/Album.ts diff --git a/src/core/Album.js b/src/core/Album.js deleted file mode 100644 index 010811b0..00000000 --- a/src/core/Album.js +++ /dev/null @@ -1,65 +0,0 @@ -const Data = require('./Data') -const Image = require('./Image') -const ImageArtifactType = require('./ImageArtifactType') -const {find, findOne} = require('../lib/store') - -const previewTypes = [ - ImageArtifactType.SMALL, - ImageArtifactType.MEDIUM, - ImageArtifactType.BIG, - ImageArtifactType.ORIGIN, -] -const store = () => Data.getStore(Album) - -class Album { - static async find(query, options = {}) { - const items = await find(store(), query, options) - - return Promise.all(items.map(processAlbum)) - } - - static async findById(id) { - const item = await findOne(store(), {id}) - - return !item - ? null - : processAlbum(item) - } -} - -const previewFromImage = (imgs = []) => imgs.length - ? imgs[0] - : null - -const processAlbum = async album => { - let preview = {} - // { - // data: [ - // { - // url: null, - // width: 0, - // height: 0, - // } - // ] - // } - - const previewImageId = album.preview ? album.preview : previewFromImage(album.images) - if (previewImageId) { - const image = await Image.findById(previewImageId) - if (image) { - // const imageArtifacts = image.findArtifact(previewTypes) - // if (imageArtifacts) { - // preview = imageArtifacts - // } - preview = image.getPicture(ImageArtifactType.SMALL) - } - } - - return { - ...album, - preview, - url: `/album/${album.id}`, - } -} - -module.exports = Album diff --git a/src/core/Album.ts b/src/core/Album.ts new file mode 100644 index 00000000..d8dad494 --- /dev/null +++ b/src/core/Album.ts @@ -0,0 +1,63 @@ +import Data from './Data' +import Image from './Image' +import ImageArtifactType from './ImageArtifactType' +import { find, findOne } from '../lib/store' + +const previewTypes = [ + ImageArtifactType.SMALL, + ImageArtifactType.MEDIUM, + ImageArtifactType.BIG, + ImageArtifactType.ORIGIN, +] +const store = () => Data.getStore('Album') + +export default class Album { + static async find(query, options = {}) { + const items = await find(store(), query, options as any) + + return Promise.all(items.map(processAlbum)) + } + + static async findById(id) { + const item = await findOne(store(), { id }) + + return !item + ? null + : processAlbum(item) + } +} + +const previewFromImage = (imgs = []) => imgs.length + ? imgs[0] + : null + +const processAlbum = async album => { + let preview = {} + // { + // data: [ + // { + // url: null, + // width: 0, + // height: 0, + // } + // ] + // } + + const previewImageId = album.preview ? album.preview : previewFromImage(album.images) + if (previewImageId) { + const image = await Image.findById(previewImageId) + if (image) { + // const imageArtifacts = image.findArtifact(previewTypes) + // if (imageArtifacts) { + // preview = imageArtifacts + // } + preview = image.getPicture(ImageArtifactType.SMALL) + } + } + + return { + ...album, + preview, + url: `/album/${album.id}`, + } +} diff --git a/src/core/db.ts b/src/core/db.ts index 55321851..7770ed1a 100644 --- a/src/core/db.ts +++ b/src/core/db.ts @@ -38,7 +38,7 @@ function init(db) { Data.setStore('Page', db.collection('pages')) Data.setStore('Article', db.collection('articles')) - Data.setStore(Album, db.collection('albums')) + Data.setStore('Album', db.collection('albums')) Data.setStore('Image', db.collection('images')) Data.setStore('Teacher', db.collection('collective')) Data.setStore(Document, db.collection('documents'))