remove unnecessary double-query on get shared data

This commit is contained in:
Stanley Dimant
2025-01-19 19:12:28 +01:00
parent c7287a8283
commit 7d8ebe88f3

View File

@@ -145,7 +145,9 @@ public partial class MareHub
.Include(u => u.AllowedIndividiuals) .Include(u => u.AllowedIndividiuals)
.Include(u => u.Poses) .Include(u => u.Poses)
.Include(u => u.Uploader) .Include(u => u.Uploader)
.Where(p => p.ShareType == CharaDataShare.Shared && validPairs.Contains(p.UploaderUID)) .Where(p => p.UploaderUID != UserUID && p.ShareType == CharaDataShare.Shared)
.Where(p => (validPairs.Contains(p.UploaderUID)
|| (p.AllowedIndividiuals.Any(u => u.AllowedUserUID == UserUID || (u.AllowedGroupGID != null && groups.Contains(u.AllowedGroupGID))))))
.AsSplitQuery() .AsSplitQuery()
.AsNoTracking() .AsNoTracking()
.ToListAsync() .ToListAsync()
@@ -159,32 +161,6 @@ public partial class MareHub
} }
} }
var ownGroups = await DbContext.GroupPairs.Where(u => u.GroupUserUID == UserUID)
.Select(k => k.GroupGID)
.ToListAsync()
.ConfigureAwait(false);
var charaDataDirectlyShared = await DbContext.CharaData.Include(u => u.Files)
.Include(u => u.OriginalFiles)
.Include(u => u.AllowedIndividiuals)
.Include(u => u.Poses)
.Include(u => u.Uploader)
.Where(p => p.UploaderUID != UserUID
&& p.ShareType == CharaDataShare.Shared
&& (p.AllowedIndividiuals.Any(u => u.AllowedUserUID == UserUID || (u.AllowedGroupGID != null && ownGroups.Contains(u.AllowedGroupGID)))))
.AsSplitQuery()
.AsNoTracking()
.ToListAsync()
.ConfigureAwait(false);
foreach (var data in charaDataDirectlyShared)
{
if (sharedCharaData.Exists(d => string.Equals(d.Id, data.Id, StringComparison.Ordinal)
&& string.Equals(d.UploaderUID, d.UploaderUID, StringComparison.Ordinal)))
continue;
sharedCharaData.Add(data);
}
_logger.LogCallInfo(MareHubLogger.Args("SUCCESS", sharedCharaData.Count)); _logger.LogCallInfo(MareHubLogger.Args("SUCCESS", sharedCharaData.Count));
return [.. sharedCharaData.Select(GetCharaDataMetaInfoDto)]; return [.. sharedCharaData.Select(GetCharaDataMetaInfoDto)];