traxxx/src/sites.js

51 lines
1.1 KiB
JavaScript
Raw Normal View History

'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,
};