traxxx/src/sites.js

57 lines
1.5 KiB
JavaScript
Raw Normal View History

'use strict';
const knex = require('./knex');
const whereOr = require('./utils/where-or');
async function curateSite(site) {
const parameters = JSON.parse(site.parameters);
return {
id: site.id,
name: site.name,
url: site.url,
description: site.description,
slug: site.slug,
independent: !!parameters && parameters.independent,
network: {
id: site.network_id,
name: site.network_name,
description: site.network_description,
slug: site.network_slug,
url: site.network_url,
},
};
}
function curateSites(sites) {
return Promise.all(sites.map(async site => curateSite(site)));
}
async function fetchSites(queryObject) {
const sites = await knex('sites')
.where(builder => whereOr(queryObject, 'sites', builder))
.select(
'sites.*',
'networks.name as network_name', 'networks.slug as network_slug', 'networks.url as network_url', 'networks.description as networks_description',
)
.leftJoin('networks', 'sites.network_id', 'networks.id')
.limit(100);
return curateSites(sites);
}
async function fetchSitesFromReleases() {
const sites = await knex('releases')
.select('site_id', '')
.leftJoin('sites', 'sites.id', 'releases.site_id')
.groupBy('sites.id')
.limit(100);
return curateSites(sites);
}
module.exports = {
fetchSites,
fetchSitesFromReleases,
};