using Microsoft.EntityFrameworkCore; using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Services; namespace ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Services; /// /// Resolves instance unique names to site identifiers using the configuration database. /// public class InstanceLocator : IInstanceLocator { private readonly ScadaBridgeDbContext _context; /// Initializes the locator with the EF Core database context. /// The database context used to look up instances and sites. public InstanceLocator(ScadaBridgeDbContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); } /// public async Task GetSiteIdForInstanceAsync( string instanceUniqueName, CancellationToken cancellationToken = default) { var instance = await _context.Set() .FirstOrDefaultAsync(i => i.UniqueName == instanceUniqueName, cancellationToken); if (instance == null) return null; var site = await _context.Set() .FindAsync(new object[] { instance.SiteId }, cancellationToken); return site?.SiteIdentifier; } }