traxxx/src/releases.js

73 lines
2.4 KiB
JavaScript
Raw Normal View History

'use strict';
const knex = require('./knex');
async function curateRelease(release) {
2019-09-10 14:48:04 +00:00
const [actors, tags, media] = await Promise.all([
knex('actors_associated')
.select('actors.id', 'actors.name', 'actors.gender', 'actors.slug')
.where({ release_id: release.id })
.leftJoin('actors', 'actors.id', 'actors_associated.actor_id'),
knex('tags_associated')
.select('tags.tag', 'tags.slug')
.where({ release_id: release.id })
.leftJoin('tags', 'tags.id', 'tags_associated.tag_id'),
knex('media')
.where({ target_id: release.id })
.orderBy('role'),
]);
2019-05-06 21:41:38 +00:00
return {
id: release.id,
title: release.title,
date: release.date,
description: release.description,
url: release.url,
shootId: release.shoot_id,
entryId: release.entry_id,
actors,
director: release.director,
2019-05-06 21:41:38 +00:00
tags,
photos: media.filter(item => item.role === 'photo'),
poster: media.filter(item => item.role === 'poster')[0],
trailer: media.filter(item => item.role === 'trailer')[0],
rating: {
likes: release.likes,
dislikes: release.dislikes,
stars: release.stars,
},
site: {
id: release.site_id,
name: release.site_name,
2019-05-18 23:34:08 +00:00
url: release.site_url,
2019-05-08 03:50:13 +00:00
},
network: {
id: release.network_id,
name: release.network_name,
url: release.network_url,
},
};
}
function curateReleases(releases) {
return Promise.all(releases.map(async release => curateRelease(release)));
}
2019-05-18 23:34:08 +00:00
async function fetchReleases(releaseId) {
// const thumbnails = await fs.readdir(path.join(config.thumbnailPath, release.site.id.toString(), release.id.toString()));
const releases = await knex('releases')
2019-05-18 23:34:08 +00:00
.where(releaseId ? { 'releases.id': releaseId } : {})
.select('releases.*', 'sites.name as site_name', 'sites.url as site_url', 'sites.network_id', 'networks.name as network_name', 'networks.url as network_url')
.leftJoin('sites', 'releases.site_id', 'sites.id')
2019-05-08 03:50:13 +00:00
.leftJoin('networks', 'sites.network_id', 'networks.id')
.orderBy('date', 'desc')
.limit(100);
return curateReleases(releases);
}
module.exports = {
fetchReleases,
};