Added prefer option for entity resolution. Merged migrations.

This commit is contained in:
DebaucheryLibrarian
2023-07-01 22:24:21 +02:00
parent 744bdb3170
commit a2331bc913
4 changed files with 11 additions and 22 deletions

View File

@@ -244,6 +244,12 @@ const { argv } = yargs
type: 'string',
default: process.env.NODE_ENV === 'development' ? 'silly' : 'info',
})
.option('prefer-entity', {
alias: 'prefer',
describe: 'Prefer network or channel when resolving entities with the same identifier.',
choices: ['channel', 'network'],
type: 'string',
})
.option('resolve-place', {
describe: 'Call OSM Nominatim API for actor place of birth and residence. Raw value discarded if disabled.',
type: 'boolean',

View File

@@ -199,7 +199,7 @@ async function fetchIncludedEntities() {
return curatedNetworks;
}
async function fetchEntitiesBySlug(entitySlugs, sort = 'asc') {
async function fetchEntitiesBySlug(entitySlugs, prefer = 'channel') {
const entities = await knex.raw(`
WITH RECURSIVE entity_tree as (
SELECT to_jsonb(entities) as entity,
@@ -235,7 +235,7 @@ async function fetchEntitiesBySlug(entitySlugs, sort = 'asc') {
`, {
entitySlugs: entitySlugs.filter((slug) => !slug.includes('.')),
entityHosts: entitySlugs.filter((slug) => slug.includes('.')).map((hostname) => `%${hostname}%`),
sort: knex.raw(sort),
sort: knex.raw(prefer === 'channel' ? 'asc' : 'desc'),
});
// channel entity will overwrite network entity
@@ -262,7 +262,7 @@ async function fetchReleaseEntities(baseReleases) {
.filter(Boolean),
));
return fetchEntitiesBySlug(entitySlugs, 'desc');
return fetchEntitiesBySlug(entitySlugs, argv.prefer || 'network');
}
async function fetchEntity(entityId, type) {