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