Performance: push ORDER BY/TAKE into SQL for hot-path reads
- IInAppNotificationRepository: typed repo with GetPagedAsync, GetRecentAsync, GetUnreadAsync — bell dropdown no longer loads all notifications then slices in C# - Add compound indexes on InAppNotifications(CompanyId, IsDeleted, CreatedAt) and (CompanyId, IsDeleted, IsRead); ContactSubmissions(CompanyId, IsDeleted, CreatedAt) - PlainRepository.GetAllAsync/FindAsync: add AsNoTracking (Announcements, Tips, ReleaseNotes) - AiUsageReportController: replace GetAllAsync + C# Where with FindAsync (SQL-level filter) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -109,7 +109,7 @@ public class UnitOfWork : IUnitOfWork
|
||||
private IPlainRepository<Announcement>? _announcements;
|
||||
private IPlainRepository<BannedIp>? _bannedIps;
|
||||
private IPlainRepository<DashboardTip>? _dashboardTips;
|
||||
private IRepository<InAppNotification>? _inAppNotifications;
|
||||
private IInAppNotificationRepository? _inAppNotifications;
|
||||
private IPlainRepository<ReleaseNote>? _releaseNotes;
|
||||
|
||||
// Bug Reports
|
||||
@@ -439,8 +439,8 @@ public class UnitOfWork : IUnitOfWork
|
||||
_dashboardTips ??= new PlainRepository<DashboardTip>(_context);
|
||||
|
||||
/// <summary>Repository for <see cref="InAppNotification"/> bell-notification records; tenant-filtered with soft delete.</summary>
|
||||
public IRepository<InAppNotification> InAppNotifications =>
|
||||
_inAppNotifications ??= new Repository<InAppNotification>(_context);
|
||||
public IInAppNotificationRepository InAppNotifications =>
|
||||
_inAppNotifications ??= new InAppNotificationRepository(_context);
|
||||
|
||||
/// <summary>Repository for <see cref="ReleaseNote"/> platform changelog entries; no tenant filter, no soft delete.</summary>
|
||||
public IPlainRepository<ReleaseNote> ReleaseNotes =>
|
||||
|
||||
Reference in New Issue
Block a user