fix: GetTicketSummaries goes from 1 + N queries to 1 + 1

This commit is contained in:
Yinyin Liu 2026-04-29 15:13:08 +02:00
parent 7f902c7271
commit c21000e658
1 changed files with 18 additions and 1 deletions

View File

@ -2534,9 +2534,26 @@ public class Controller : ControllerBase
if (user is null || user.UserType != 2) return Unauthorized();
var tickets = Db.GetAllTickets();
var installationIds = tickets
.Where(t => t.InstallationId.HasValue)
.Select(t => t.InstallationId!.Value)
.Distinct()
.ToList();
var installationsById = installationIds.Count == 0
? new Dictionary<Int64, Installation>()
: Db.Installations
.Where(i => installationIds.Contains(i.Id))
.ToList()
.ToDictionary(i => i.Id);
var summaries = tickets.Select(t =>
{
var installation = t.InstallationId.HasValue ? Db.GetInstallationById(t.InstallationId.Value) : null;
Installation? installation = null;
if (t.InstallationId.HasValue)
installationsById.TryGetValue(t.InstallationId.Value, out installation);
return new
{
t.Id, t.Subject, t.Status, t.Priority, t.Category, t.SubCategory,