Merging actor avatars. Fixed faulty actor ID search in merge dialog.

This commit is contained in:
2026-06-10 01:43:35 +02:00
parent f9a51ffdce
commit 15b61ed56f
2 changed files with 12 additions and 4 deletions

View File

@@ -97,7 +97,7 @@ const submitted = ref(false);
async function searchActors() { async function searchActors() {
const res = await get('/actors', { const res = await get('/actors', {
q: `${actorQuery.value}*`, // return partial matches q: actorQuery.value.charAt(0) === '#' ? actorQuery.value : `${actorQuery.value}*`, // return partial matches
limit: 10, limit: 10,
global: true, global: true,
}); });

View File

@@ -260,14 +260,17 @@ export async function fetchActorsById(actorIds, options = {}, reqUser) {
knex('actors_avatars') knex('actors_avatars')
.select( .select(
'media.*', 'media.*',
'actors_avatars.actor_id', // 'actors_avatars.actor_id',
'actors_profiles.actor_id',
knex.raw('json_agg(actors_avatars.profile_id) as profile_ids'), knex.raw('json_agg(actors_avatars.profile_id) as profile_ids'),
knex.raw('row_to_json(sfw_media) as sfw_media'), knex.raw('row_to_json(sfw_media) as sfw_media'),
) )
.whereIn('actor_id', actorIds) .whereIn('actors_profiles.actor_id', actorIds)
.leftJoin('media', 'media.id', 'actors_avatars.media_id') .leftJoin('media', 'media.id', 'actors_avatars.media_id')
.leftJoin('media as sfw_media', 'sfw_media.id', 'media.sfw_media_id') .leftJoin('media as sfw_media', 'sfw_media.id', 'media.sfw_media_id')
.groupBy('media.id', 'sfw_media.id', 'actors_avatars.actor_id') .leftJoin('actors_profiles', 'actors_profiles.id', 'actors_avatars.profile_id')
// .groupBy('media.id', 'sfw_media.id', 'actors_avatars.actor_id')
.groupBy('media.id', 'sfw_media.id', 'actors_profiles.actor_id')
.orderBy(knex.raw('max(actors_avatars.created_at)'), 'desc'), .orderBy(knex.raw('max(actors_avatars.created_at)'), 'desc'),
knex('actors_socials') knex('actors_socials')
.whereIn('actor_id', actorIds), .whereIn('actor_id', actorIds),
@@ -603,6 +606,11 @@ export async function mergeActors(targetActorId, sourceActorId, reqUser) {
.where('actor_id', sourceActorId) .where('actor_id', sourceActorId)
.returning('id'); .returning('id');
// some avatars are not matched to a profile, need to investigate why this happens and the avatar table needs a dedicated actor field
await trx('actors_avatars')
.update('actor_id', targetActorId)
.where('actor_id', sourceActorId);
mergedScenes = await trx('releases_actors') mergedScenes = await trx('releases_actors')
.update({ .update({
actor_id: targetActorId, actor_id: targetActorId,