2019-05-06 00:01:57 +00:00
|
|
|
'use strict';
|
|
|
|
|
2020-02-08 01:49:39 +00:00
|
|
|
const logger = require('./logger')(__filename);
|
2019-05-06 00:01:57 +00:00
|
|
|
const knex = require('./knex');
|
2019-11-17 02:56:45 +00:00
|
|
|
|
2020-02-26 21:33:15 +00:00
|
|
|
async function updateReleasesSearch(releaseIds) {
|
2020-03-10 22:46:55 +00:00
|
|
|
logger.info(`Updating search documents for ${releaseIds ? releaseIds.length : 'all' } releases`);
|
|
|
|
|
2020-02-26 21:33:15 +00:00
|
|
|
const documents = await knex.raw(`
|
|
|
|
SELECT
|
2020-03-09 23:17:57 +00:00
|
|
|
releases.id AS release_id,
|
|
|
|
TO_TSVECTOR(
|
2020-02-29 04:00:50 +00:00
|
|
|
'traxxx',
|
2020-02-26 21:33:15 +00:00
|
|
|
releases.title || ' ' ||
|
2020-02-29 04:00:50 +00:00
|
|
|
networks.name || ' ' ||
|
|
|
|
networks.slug || ' ' ||
|
2020-03-19 00:54:25 +00:00
|
|
|
networks.url || ' ' ||
|
2020-03-11 23:15:25 +00:00
|
|
|
sites.name || ' ' ||
|
|
|
|
sites.slug || ' ' ||
|
2020-03-19 00:54:25 +00:00
|
|
|
COALESCE(sites.url, '') || ' ' ||
|
2020-03-11 23:15:25 +00:00
|
|
|
COALESCE(sites.alias, '') || ' ' ||
|
2020-03-09 23:17:57 +00:00
|
|
|
COALESCE(releases.shoot_id, '') || ' ' ||
|
2020-03-10 22:46:55 +00:00
|
|
|
COALESCE(TO_CHAR(releases.date, 'YYYY YY MM FMMM FMmonth mon DD FMDD'), '') || ' ' ||
|
2020-03-09 23:17:57 +00:00
|
|
|
STRING_AGG(COALESCE(actors.name, ''), ' ') || ' ' ||
|
|
|
|
STRING_AGG(COALESCE(tags.name, ''), ' ') || ' ' ||
|
|
|
|
STRING_AGG(COALESCE(tags_aliases.name, ''), ' ')
|
2020-02-26 21:33:15 +00:00
|
|
|
) as document
|
|
|
|
FROM releases
|
2020-02-29 04:00:50 +00:00
|
|
|
LEFT JOIN sites ON releases.site_id = sites.id
|
|
|
|
LEFT JOIN networks ON sites.network_id = networks.id
|
2020-02-27 04:44:24 +00:00
|
|
|
LEFT JOIN releases_actors AS local_actors ON local_actors.release_id = releases.id
|
|
|
|
LEFT JOIN releases_tags AS local_tags ON local_tags.release_id = releases.id
|
|
|
|
LEFT JOIN actors ON local_actors.actor_id = actors.id
|
|
|
|
LEFT JOIN tags ON local_tags.tag_id = tags.id
|
2020-02-29 21:47:48 +00:00
|
|
|
LEFT JOIN tags as tags_aliases ON local_tags.tag_id = tags_aliases.alias_for
|
2020-03-10 22:46:55 +00:00
|
|
|
${releaseIds ? 'WHERE releases.id = ANY(?)' : ''}
|
2020-03-19 00:54:25 +00:00
|
|
|
GROUP BY releases.id, sites.name, sites.slug, sites.alias, sites.url, networks.name, networks.slug, networks.url;
|
2020-03-10 22:46:55 +00:00
|
|
|
`, releaseIds && [releaseIds]);
|
2020-02-26 21:33:15 +00:00
|
|
|
|
2020-02-29 02:22:51 +00:00
|
|
|
if (documents.rows?.length > 0) {
|
2020-02-27 04:44:24 +00:00
|
|
|
const query = knex('releases_search').insert(documents.rows).toString();
|
|
|
|
await knex.raw(`${query} ON CONFLICT (release_id) DO UPDATE SET document = EXCLUDED.document`);
|
|
|
|
}
|
2020-02-26 21:33:15 +00:00
|
|
|
}
|
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
module.exports = {
|
2020-03-10 22:46:55 +00:00
|
|
|
updateReleasesSearch,
|
2019-05-06 00:01:57 +00:00
|
|
|
};
|