using Campaign_Tracker.Server.LegacyData.Models; namespace Campaign_Tracker.Server.LegacyData; /// /// Anti-corruption layer contract for read-only access to legacy Access-derived entities. /// /// Design invariants enforced by this interface (AC #2, AC #4): /// - This interface exposes NO write methods (no Insert/Update/Delete/Remove/Modify). /// - All callers MUST use this interface; no code outside this namespace may query /// legacy tables directly. /// - All returned types are strongly-typed read-only domain records (AC #3). /// - Join keys (ID, JCode/JurisCode, KitID) are the only navigation paths (AC #1). /// public interface ILegacyDataAccess { // ── Jurisdiction queries (join key: JCode / JurisCode) ────────────────── Task GetJurisdictionAsync( string jCode, CancellationToken cancellationToken = default); Task> GetAllJurisdictionsAsync( CancellationToken cancellationToken = default); // ── Contact queries (join keys: ID, JURISCODE) ─────────────────────────── Task GetContactByIdAsync( int id, CancellationToken cancellationToken = default); Task> GetContactsByJurisdictionAsync( string jCode, CancellationToken cancellationToken = default); // ── Kit queries (join keys: ID, Jcode) ─────────────────────────────────── Task GetKitByIdAsync( int id, CancellationToken cancellationToken = default); Task> GetKitsByJurisdictionAsync( string jCode, CancellationToken cancellationToken = default); // ── KitLabel queries (join key: KitID) ─────────────────────────────────── Task> GetKitLabelsByKitAsync( int kitId, CancellationToken cancellationToken = default); }