feat(configdb): native alarm source repository CRUD + eager-load includes

This commit is contained in:
Joseph Doherty
2026-05-29 15:56:35 -04:00
parent 63f1ec282f
commit aedd17ca7f
3 changed files with 138 additions and 0 deletions
@@ -29,6 +29,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(t => t.Alarms)
.Include(t => t.Scripts)
.Include(t => t.Compositions)
.Include(t => t.NativeAlarmSources)
.AsSplitQuery()
.FirstOrDefaultAsync(t => t.Id == id, cancellationToken);
}
@@ -59,6 +60,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(t => t.Alarms)
.Include(t => t.Scripts)
.Include(t => t.Compositions)
.Include(t => t.NativeAlarmSources)
.AsSplitQuery()
.ToListAsync(cancellationToken);
}
@@ -71,6 +73,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(t => t.Alarms)
.Include(t => t.Scripts)
.Include(t => t.Compositions)
.Include(t => t.NativeAlarmSources)
.AsSplitQuery()
.ToListAsync(cancellationToken);
}
@@ -188,6 +191,45 @@ public class TemplateEngineRepository : ITemplateEngineRepository
}
}
// TemplateNativeAlarmSource
/// <inheritdoc />
public async Task<TemplateNativeAlarmSource?> GetTemplateNativeAlarmSourceByIdAsync(int id, CancellationToken cancellationToken = default)
{
return await _context.TemplateNativeAlarmSources.FindAsync(new object[] { id }, cancellationToken);
}
/// <inheritdoc />
public async Task<IReadOnlyList<TemplateNativeAlarmSource>> GetNativeAlarmSourcesByTemplateIdAsync(int templateId, CancellationToken cancellationToken = default)
{
return await _context.TemplateNativeAlarmSources
.Where(s => s.TemplateId == templateId)
.ToListAsync(cancellationToken);
}
/// <inheritdoc />
public async Task AddTemplateNativeAlarmSourceAsync(TemplateNativeAlarmSource source, CancellationToken cancellationToken = default)
{
await _context.TemplateNativeAlarmSources.AddAsync(source, cancellationToken);
}
/// <inheritdoc />
public Task UpdateTemplateNativeAlarmSourceAsync(TemplateNativeAlarmSource source, CancellationToken cancellationToken = default)
{
_context.TemplateNativeAlarmSources.Update(source);
return Task.CompletedTask;
}
/// <inheritdoc />
public async Task DeleteTemplateNativeAlarmSourceAsync(int id, CancellationToken cancellationToken = default)
{
var source = await _context.TemplateNativeAlarmSources.FindAsync(new object[] { id }, cancellationToken);
if (source != null)
{
_context.TemplateNativeAlarmSources.Remove(source);
}
}
// TemplateScript
/// <inheritdoc />
@@ -275,6 +317,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery()
.FirstOrDefaultAsync(i => i.Id == id, cancellationToken);
}
@@ -286,6 +329,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery()
.ToListAsync(cancellationToken);
}
@@ -306,6 +350,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery()
.ToListAsync(cancellationToken);
}
@@ -317,6 +362,7 @@ public class TemplateEngineRepository : ITemplateEngineRepository
.Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery()
.FirstOrDefaultAsync(i => i.UniqueName == uniqueName, cancellationToken);
}
@@ -419,6 +465,46 @@ public class TemplateEngineRepository : ITemplateEngineRepository
}
}
// InstanceNativeAlarmSourceOverride
/// <inheritdoc />
public async Task<IReadOnlyList<InstanceNativeAlarmSourceOverride>> GetNativeAlarmSourceOverridesByInstanceIdAsync(int instanceId, CancellationToken cancellationToken = default)
{
return await _context.InstanceNativeAlarmSourceOverrides
.Where(o => o.InstanceId == instanceId)
.ToListAsync(cancellationToken);
}
/// <inheritdoc />
public async Task<InstanceNativeAlarmSourceOverride?> GetNativeAlarmSourceOverrideAsync(int instanceId, string sourceCanonicalName, CancellationToken cancellationToken = default)
{
return await _context.InstanceNativeAlarmSourceOverrides
.FirstOrDefaultAsync(o => o.InstanceId == instanceId && o.SourceCanonicalName == sourceCanonicalName, cancellationToken);
}
/// <inheritdoc />
public async Task AddInstanceNativeAlarmSourceOverrideAsync(InstanceNativeAlarmSourceOverride ovr, CancellationToken cancellationToken = default)
{
await _context.InstanceNativeAlarmSourceOverrides.AddAsync(ovr, cancellationToken);
}
/// <inheritdoc />
public Task UpdateInstanceNativeAlarmSourceOverrideAsync(InstanceNativeAlarmSourceOverride ovr, CancellationToken cancellationToken = default)
{
_context.InstanceNativeAlarmSourceOverrides.Update(ovr);
return Task.CompletedTask;
}
/// <inheritdoc />
public async Task DeleteInstanceNativeAlarmSourceOverrideAsync(int id, CancellationToken cancellationToken = default)
{
var ovr = await _context.InstanceNativeAlarmSourceOverrides.FindAsync(new object[] { id }, cancellationToken);
if (ovr != null)
{
_context.InstanceNativeAlarmSourceOverrides.Remove(ovr);
}
}
// InstanceConnectionBinding
/// <inheritdoc />