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);
}