2019-05-06 00:01:57 +00:00
'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
2019-05-06 00:01:57 +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 ,
2019-09-25 02:52:58 +00:00
photos : media . filter ( item => item . role === 'photo' ) ,
poster : media . filter ( item => item . role === 'poster' ) [ 0 ] ,
trailer : media . filter ( item => item . role === 'trailer' ) [ 0 ] ,
2019-05-06 00:01:57 +00:00
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 ,
2019-05-06 00:01:57 +00:00
} ,
} ;
}
function curateReleases ( releases ) {
return Promise . all ( releases . map ( async release => curateRelease ( release ) ) ) ;
}
2019-05-18 23:34:08 +00:00
async function fetchReleases ( releaseId ) {
2019-06-03 03:31:38 +00:00
// const thumbnails = await fs.readdir(path.join(config.thumbnailPath, release.site.id.toString(), release.id.toString()));
2019-05-06 00:01:57 +00:00
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' )
2019-05-06 00:01:57 +00:00
. leftJoin ( 'sites' , 'releases.site_id' , 'sites.id' )
2019-05-08 03:50:13 +00:00
. leftJoin ( 'networks' , 'sites.network_id' , 'networks.id' )
2019-05-06 00:01:57 +00:00
. orderBy ( 'date' , 'desc' )
. limit ( 100 ) ;
return curateReleases ( releases ) ;
}
module . exports = {
fetchReleases ,
} ;