Skip to content

Commit 60ae56f

Browse files
committed
fix: incorrect projection of query from LINQ
1 parent 84e83eb commit 60ae56f

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

App/Modules/Cyan/Data/Repositories/PluginRepository.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,17 +411,19 @@ public async Task<Result<IEnumerable<PluginVersionPrincipal>>> GetAllVersion(IEn
411411
: c.Or(x => x.Plugin.Name == r.Name && x.Plugin.User.Username == r.Username)
412412
);
413413

414-
query = query.Where(predicate)
414+
var all = await query.Where(predicate).ToArrayAsync();
415+
var grouped = all
415416
.GroupBy(x => new { x.Plugin.Name, x.Plugin.User.Username })
416-
.Select(g => g.OrderByDescending(o => o.Version).First());
417+
.Select(g => g.OrderByDescending(o => o.Version).First())
418+
.ToArray();
417419

418-
var plugins = await query.Select(x => x.ToPrincipal()).ToArrayAsync();
420+
var plugins = grouped.Select(x => x.ToPrincipal()).ToArray();
419421

420422
this._logger.LogInformation("Plugin References: {@PluginReferences}", plugins.Select(x => x.Id));
421423

422424
if (plugins.Length != pluginRefs.Length)
423425
{
424-
var found = await query.Select(x => $"{x.Plugin.User.Username}/{x.Plugin.Name}:{x.Version}").ToArrayAsync();
426+
var found = grouped.Select(x => $"{x.Plugin.User.Username}/{x.Plugin.Name}:{x.Version}").ToArray();
425427
var search = pluginRefs.Select(x => $"{x.Username}/{x.Name}:{x.Version}");
426428
var notFound = search.Except(found);
427429
return new MultipleEntityNotFound("Plugins not found", typeof(PluginPrincipal), notFound.ToArray(),

App/Modules/Cyan/Data/Repositories/ProcessorRepository.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -415,22 +415,24 @@ public async Task<Result<IEnumerable<ProcessorVersionPrincipal>>> GetAllVersion(
415415
: c.Or(x => x.Processor.Name == r.Name && x.Processor.User.Username == r.Username)
416416
);
417417

418-
query = query.Where(predicate)
418+
var all = await query.Where(predicate).ToArrayAsync();
419+
var grouped = all
419420
.GroupBy(x => new { x.Processor.Name, x.Processor.User.Username })
420-
.Select(g => g.OrderByDescending(o => o.Version).First());
421+
.Select(g => g.OrderByDescending(o => o.Version).First())
422+
.ToArray();
421423

422-
var processors = await query.Select(x => x.ToPrincipal()).ToArrayAsync();
424+
var processors = grouped.Select(x => x.ToPrincipal()).ToArray();
423425
this._logger.LogInformation("Processor References: {@ProcessorReferences}", processors.Select(x => x.Id));
424426

425427
if (processors.Length != processorRefs.Length)
426428
{
427-
var found = await query.Select(x => $"{x.Processor.User.Username}/{x.Processor.Name}:{x.Version}")
428-
.ToArrayAsync();
429+
var found = grouped.Select(x => $"{x.Processor.User.Username}/{x.Processor.Name}:{x.Version}").ToArray();
429430
var search = processorRefs.Select(x => $"{x.Username}/{x.Name}:{x.Version}");
430431
var notFound = search.Except(found).ToArray();
431432
return new MultipleEntityNotFound("Processors not found", typeof(ProcessorPrincipal), notFound, found)
432433
.ToException();
433434
}
435+
434436
return processors;
435437
}
436438
catch (Exception e)

0 commit comments

Comments
 (0)