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