forked from DebaucheryLibrarian/traxxx
64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const knex = require('./knex');
|
||
|
|
||
|
async function curateNetwork(network) {
|
||
|
const [sites, studios] = await Promise.all([
|
||
|
knex('sites')
|
||
|
.where({ network_id: network.id }),
|
||
|
knex('studios')
|
||
|
.where({ network_id: network.id }),
|
||
|
]);
|
||
|
|
||
|
return {
|
||
|
id: network.id,
|
||
|
name: network.name,
|
||
|
url: network.url,
|
||
|
description: network.description,
|
||
|
slug: network.slug,
|
||
|
sites: sites.map(site => ({
|
||
|
id: site.id,
|
||
|
name: site.name,
|
||
|
url: site.url,
|
||
|
description: site.description,
|
||
|
slug: site.slug,
|
||
|
})),
|
||
|
studios: studios.map(studio => ({
|
||
|
id: studio.id,
|
||
|
name: studio.name,
|
||
|
url: studio.url,
|
||
|
description: studio.description,
|
||
|
slug: studio.slug,
|
||
|
})),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function curateNetworks(releases) {
|
||
|
return Promise.all(releases.map(async release => curateNetwork(release)));
|
||
|
}
|
||
|
|
||
|
async function fetchNetworks(networkId, networkSlug) {
|
||
|
const releases = await knex('networks')
|
||
|
.where({ id: networkId })
|
||
|
.orWhere({ slug: networkSlug })
|
||
|
.limit(100);
|
||
|
|
||
|
return curateNetworks(releases);
|
||
|
}
|
||
|
|
||
|
async function fetchNetworksFromReleases() {
|
||
|
const releases = await knex('releases')
|
||
|
.select('site_id', '')
|
||
|
.leftJoin('sites', 'sites.id', 'releases.site_id')
|
||
|
.leftJoin('networks', 'networks.id', 'sites.network_id')
|
||
|
.groupBy('networks.id')
|
||
|
.limit(100);
|
||
|
|
||
|
return curateNetworks(releases);
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
fetchNetworks,
|
||
|
fetchNetworksFromReleases,
|
||
|
};
|