namespace JdeScoping.DataSync.Contracts; /// /// Interface for fetching data from source systems (JDE/CMS). /// /// The entity type being fetched. public interface IDataFetcher where TEntity : class { /// /// Fetches entities from source system as an async stream. /// /// For incremental fetches, only return records modified after this time. Null for full fetch. /// Cancellation token for graceful shutdown. /// Async enumerable of entities, streamed from source. IAsyncEnumerable FetchAsync( DateTime? minimumDt, CancellationToken cancellationToken = default); /// /// Gets the entity type name for logging purposes. /// string EntityTypeName => typeof(TEntity).Name; }