namespace JdeScoping.DataSync.Options; /// /// Configuration for a single data source table sync. /// public class DataSourceConfig { /// /// Target table name in SQL Server cache. /// public required string TableName { get; set; } /// /// Source system: "JDE" or "CMS". /// public required string SourceSystem { get; set; } /// /// Source data identifier (e.g., "WORKORDER", "LOTUSAGE"). /// public string SourceData { get; set; } = string.Empty; /// /// Name of IDataFetcher implementation type (without generic suffix). /// Deprecated: Will be removed in a future release. /// [Obsolete("FetcherTypeName is deprecated and will be removed. Use pipelines.json configuration instead.")] public string? FetcherTypeName { get; set; } /// /// Optional IPostProcessor implementation type name. /// Deprecated: Will be removed in a future release. /// [Obsolete("PostProcessorTypeName is deprecated and will be removed. Use pipelines.json postScripts instead.")] public string? PostProcessorTypeName { get; set; } /// /// Whether this data source is enabled for sync. /// public bool IsEnabled { get; set; } = true; /// /// Mass sync schedule configuration. /// public ScheduleConfig MassConfig { get; set; } = new(); /// /// Daily incremental sync configuration. /// public ScheduleConfig DailyConfig { get; set; } = new(); /// /// Hourly incremental sync configuration. /// public ScheduleConfig HourlyConfig { get; set; } = new(); } /// /// Schedule configuration for a sync type (Mass/Daily/Hourly). /// public class ScheduleConfig { /// /// Whether this schedule is enabled. /// public bool Enabled { get; set; } = true; /// /// Interval in minutes between syncs. /// public int IntervalMinutes { get; set; } /// /// Whether to truncate the table before syncing (mass updates only). /// Deprecated: Will be removed in a future release. /// [Obsolete("PrepurgeData is deprecated and will be removed. Use pipelines.json syncModes.prePurge instead.")] public bool PrepurgeData { get; set; } = false; /// /// Whether to rebuild indexes after syncing (mass updates only). /// Deprecated: Will be removed in a future release. /// [Obsolete("ReIndexData is deprecated and will be removed. Use pipelines.json syncModes.reIndex instead.")] public bool ReIndexData { get; set; } = false; }