DB Models for Image, Album, based on Data

This commit is contained in:
tmshv committed 2017-05-25 21:48:11 +03:00
1 parent b829885b00
commit b69c19239e
5 files changed
+106 -16

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
const Data = require('./Data')
const Image = require('./Image')
const {find, findOne} = require('../lib/store')
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 => {
const previewImageId = album.preview ? album.preview : previewFromImage(album.images)
let preview
if (previewImageId) {
const image = await Image.findById(previewImageId)
preview = image.data.medium
}
return {
...album,
preview,
url: `/album/${album.id}`,
}
}
module.exports = Album