diff --git a/src/Domain/Masa.Alert.Domain/AlarmRules/Services/AlarmRuleDomainService.cs b/src/Domain/Masa.Alert.Domain/AlarmRules/Services/AlarmRuleDomainService.cs index 41d959e..e3d94dd 100644 --- a/src/Domain/Masa.Alert.Domain/AlarmRules/Services/AlarmRuleDomainService.cs +++ b/src/Domain/Masa.Alert.Domain/AlarmRules/Services/AlarmRuleDomainService.cs @@ -99,13 +99,13 @@ public async Task UpdateAsync(AlarmRule alarmRule, bool isEnabled, CheckFrequenc public async Task GetLatest(Guid alarmRuleId) { var query = await _alarmRuleRecordRepository.GetQueryableAsync(); - return query.Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.Id).FirstOrDefault(); + return query.Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.CreationTime).FirstOrDefault(); } public async Task GetOffsetResult(Guid alarmRuleId, int offsetPeriod, string alias) { var query = await _alarmRuleRecordRepository.GetQueryableAsync(); - var offsetRecord = query.Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.Id).Skip(offsetPeriod - 1).FirstOrDefault(); + var offsetRecord = query.Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.CreationTime).Skip(offsetPeriod - 1).FirstOrDefault(); return offsetRecord?.AggregateResult.FirstOrDefault(x => x.Key == alias).Value; } diff --git a/src/Infrastructure/Masa.Alert.EntityFrameworkCore/EntityTypeConfigurations/AlarmRuleRecordConfiguration.cs b/src/Infrastructure/Masa.Alert.EntityFrameworkCore/EntityTypeConfigurations/AlarmRuleRecordConfiguration.cs index 9bf58d8..179d733 100644 --- a/src/Infrastructure/Masa.Alert.EntityFrameworkCore/EntityTypeConfigurations/AlarmRuleRecordConfiguration.cs +++ b/src/Infrastructure/Masa.Alert.EntityFrameworkCore/EntityTypeConfigurations/AlarmRuleRecordConfiguration.cs @@ -10,5 +10,6 @@ public void Configure(EntityTypeBuilder builder) builder.ToTable(AlertConsts.DB_TABLE_PREFIX + "AlarmRuleRecords", AlertConsts.DB_SCHEMA); builder.Property(x => x.AggregateResult).HasConversion(new JsonValueConverter>()); builder.Property(x => x.RuleResultItems).HasConversion(new JsonValueConverter>()); + builder.HasIndex(u => u.CreationTime); } } \ No newline at end of file diff --git a/src/Infrastructure/Masa.Alert.EntityFrameworkCore/Repositories/AlarmHistoryRepository.cs b/src/Infrastructure/Masa.Alert.EntityFrameworkCore/Repositories/AlarmHistoryRepository.cs index de2b8ae..9b4100d 100644 --- a/src/Infrastructure/Masa.Alert.EntityFrameworkCore/Repositories/AlarmHistoryRepository.cs +++ b/src/Infrastructure/Masa.Alert.EntityFrameworkCore/Repositories/AlarmHistoryRepository.cs @@ -15,6 +15,6 @@ public async Task> GetQueryableAsync() public async Task GetLastAsync(Guid alarmRuleId) { - return await Context.Set().Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.Id).FirstOrDefaultAsync(); + return await Context.Set().Where(x => x.AlarmRuleId == alarmRuleId).OrderByDescending(x => x.CreationTime).FirstOrDefaultAsync(); } }