feat(datasync): add BranchDevEtl pipeline for Branch table dev loading
This commit is contained in:
@@ -0,0 +1,37 @@
|
|||||||
|
using JdeScoping.DataAccess.Interfaces;
|
||||||
|
using JdeScoping.DataSync.Etl.Destinations;
|
||||||
|
using JdeScoping.DataSync.Etl.Models;
|
||||||
|
using JdeScoping.DataSync.Etl.Pipeline;
|
||||||
|
using JdeScoping.DataSync.Etl.Sources;
|
||||||
|
|
||||||
|
namespace JdeScoping.DataSync.DevEtl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Development ETL pipeline for the Branch table.
|
||||||
|
/// </summary>
|
||||||
|
public static class BranchDevEtl
|
||||||
|
{
|
||||||
|
public static readonly string TableName = "Branch";
|
||||||
|
public static readonly string CacheFileName = "branch.json.zstd";
|
||||||
|
|
||||||
|
private static readonly JsonColumnSchema[] Schema =
|
||||||
|
[
|
||||||
|
new("Code", typeof(string), IsNullable: false),
|
||||||
|
new("Description", typeof(string), IsNullable: true),
|
||||||
|
new("LastUpdateDT", typeof(DateTime), IsNullable: false),
|
||||||
|
];
|
||||||
|
|
||||||
|
public static EtlPipeline Create(IDbConnectionFactory connectionFactory, string cacheFilePath)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(connectionFactory);
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(cacheFilePath))
|
||||||
|
throw new ArgumentException("Cache file path is required.", nameof(cacheFilePath));
|
||||||
|
|
||||||
|
return new EtlPipelineBuilder()
|
||||||
|
.WithName($"{TableName}_Dev")
|
||||||
|
.WithSource(new JsonZstdFileSource(cacheFilePath, Schema))
|
||||||
|
.WithDestination(new DbBulkImportDestination(connectionFactory, TableName))
|
||||||
|
.Build();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user