51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const knex = require('./knex');
|
||
|
|
||
|
async function curateSite(site) {
|
||
|
const network = await knex('network').where({ id: site.network_id });
|
||
|
|
||
|
return {
|
||
|
id: site.id,
|
||
|
name: site.name,
|
||
|
url: site.url,
|
||
|
description: site.description,
|
||
|
slug: site.slug,
|
||
|
network: {
|
||
|
id: network.id,
|
||
|
name: network.name,
|
||
|
url: network.url,
|
||
|
description: network.description,
|
||
|
slug: network.slug,
|
||
|
},
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function curateSites(releases) {
|
||
|
return Promise.all(releases.map(async site => curateSite(site)));
|
||
|
}
|
||
|
|
||
|
async function fetchSites(siteId, siteSlug) {
|
||
|
const releases = await knex('sites')
|
||
|
.where({ id: siteId })
|
||
|
.orWhere({ slug: siteSlug })
|
||
|
.limit(100);
|
||
|
|
||
|
return curateSites(releases);
|
||
|
}
|
||
|
|
||
|
async function fetchSitesFromReleases() {
|
||
|
const releases = await knex('releases')
|
||
|
.select('site_id', '')
|
||
|
.leftJoin('sites', 'sites.id', 'releases.site_id')
|
||
|
.groupBy('sites.id')
|
||
|
.limit(100);
|
||
|
|
||
|
return curateSites(releases);
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
fetchSites,
|
||
|
fetchSitesFromReleases,
|
||
|
};
|