From e875244c8fe605a6e37266bcbb98b1b8d42b73d6 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 6 Jan 2026 13:20:35 -0500 Subject: [PATCH] feat(datasync): add pipeline configuration models --- .../Configuration/PipelineConfig.cs | 42 +++++++++++++++++++ .../Configuration/PipelinesRoot.cs | 11 +++++ .../Options/PipelineOptions.cs | 7 ++++ 3 files changed, 60 insertions(+) create mode 100644 NEW/src/JdeScoping.DataSync/Configuration/PipelineConfig.cs create mode 100644 NEW/src/JdeScoping.DataSync/Configuration/PipelinesRoot.cs create mode 100644 NEW/src/JdeScoping.DataSync/Options/PipelineOptions.cs diff --git a/NEW/src/JdeScoping.DataSync/Configuration/PipelineConfig.cs b/NEW/src/JdeScoping.DataSync/Configuration/PipelineConfig.cs new file mode 100644 index 0000000..fa76e58 --- /dev/null +++ b/NEW/src/JdeScoping.DataSync/Configuration/PipelineConfig.cs @@ -0,0 +1,42 @@ +namespace JdeScoping.DataSync.Configuration; + +public record PipelineConfig( + SourceConfig Source, + Dictionary SyncModes, + List? Transformers, + DestinationConfig Destination, + List? PreScripts, + List? PostScripts); + +public record SourceConfig( + string Connection, + string Query, + Dictionary? Parameters); + +public record ParameterConfig( + string Name, + string? Format, + string Source = "offset", + string? Value = null); + +public record SyncModeConfig( + string? MinDtOffset, + bool PrePurge = false, + bool ReIndex = false, + string? UpdateWhen = null, + DestinationOverride? Destination = null); + +public record DestinationOverride( + string? Type, + List? MatchColumns, + List? ExcludeFromUpdate); + +public record TransformerConfig( + string Type, + List? Columns, + Dictionary? Mappings); + +public record DestinationConfig( + string Table, + List? MatchColumns, + List? ExcludeFromUpdate); diff --git a/NEW/src/JdeScoping.DataSync/Configuration/PipelinesRoot.cs b/NEW/src/JdeScoping.DataSync/Configuration/PipelinesRoot.cs new file mode 100644 index 0000000..c94724f --- /dev/null +++ b/NEW/src/JdeScoping.DataSync/Configuration/PipelinesRoot.cs @@ -0,0 +1,11 @@ +namespace JdeScoping.DataSync.Configuration; + +public record PipelinesRoot( + PipelineSettings? Settings, // Optional - defaults applied if missing + Dictionary Pipelines) +{ + public PipelineSettings EffectiveSettings => Settings ?? new PipelineSettings(); +} + +public record PipelineSettings( + string Timezone = "UTC"); diff --git a/NEW/src/JdeScoping.DataSync/Options/PipelineOptions.cs b/NEW/src/JdeScoping.DataSync/Options/PipelineOptions.cs new file mode 100644 index 0000000..7f7f2ee --- /dev/null +++ b/NEW/src/JdeScoping.DataSync/Options/PipelineOptions.cs @@ -0,0 +1,7 @@ +namespace JdeScoping.DataSync.Options; + +public class PipelineOptions +{ + public const string SectionName = "Pipelines"; + public string ConfigPath { get; set; } = "Pipelines/pipelines.json"; +}