Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions Rdmp.Core.Tests/DataLoad/Engine/Integration/RemoteAttacherTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public void TestRemoteAttacherParameter(AttacherHistoricalDurations duration, st
RemoteTableDateColumn = "date"
};
var lmd = new LoadMetadata();
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) > CAST(DATEADD({convertTime}, -1, GETUTCDATE()) as Date)"));
// Updated: No longer casting column to Date - preserves time component for accurate filtering
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date > CAST(DATEADD({convertTime}, -1, GETUTCDATE()) as Date)"));
}
[Test]
public void TestRemoteAttacherParameterSinceLastUse()
Expand All @@ -42,7 +43,8 @@ public void TestRemoteAttacherParameterSinceLastUse()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) > convert(Date,'{lmd.LastLoadTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date - preserves time component
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date > convert(Date,'{lmd.LastLoadTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterSinceLastUse_NULL()
Expand All @@ -69,7 +71,8 @@ public void TestRemoteAttacherParameterCustomRange()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) >= convert(Date,'{attacher.CustomFetchDurationStartDate:yyyy-MM-dd HH:mm:ss.fff}') AND CAST(date as Date) <= convert(Date,'{attacher.CustomFetchDurationEndDate:yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date - preserves time component
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date >= convert(Date,'{attacher.CustomFetchDurationStartDate:yyyy-MM-dd HH:mm:ss.fff}') AND date <= convert(Date,'{attacher.CustomFetchDurationEndDate:yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterCustomRangeNoStart()
Expand All @@ -84,7 +87,8 @@ public void TestRemoteAttacherParameterCustomRangeNoStart()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) <= convert(Date,'{attacher.CustomFetchDurationEndDate:yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date <= convert(Date,'{attacher.CustomFetchDurationEndDate:yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterCustomRangeNoEnd()
Expand All @@ -99,7 +103,8 @@ public void TestRemoteAttacherParameterCustomRangeNoEnd()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) >= convert(Date,'{attacher.CustomFetchDurationStartDate:yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer, attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date >= convert(Date,'{attacher.CustomFetchDurationStartDate:yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterCustomRangeNoDates()
Expand Down Expand Up @@ -130,7 +135,8 @@ public void TestRemoteAttacherParameterDeltaReading()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) >= convert(Date,'{attacher.DeltaReadingStartDate.AddDays(-attacher.DeltaReadingLookBackDays):yyyy-MM-dd HH:mm:ss.fff}') AND CAST(date as Date) < convert(Date,'{attacher.DeltaReadingStartDate.AddDays(attacher.DeltaReadingLookForwardDays):yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date - preserves time component
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date >= convert(Date,'{attacher.DeltaReadingStartDate.AddDays(-attacher.DeltaReadingLookBackDays):yyyy-MM-dd HH:mm:ss.fff}') AND date < convert(Date,'{attacher.DeltaReadingStartDate.AddDays(attacher.DeltaReadingLookForwardDays):yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterDeltaReading_NoLookBack()
Expand All @@ -146,7 +152,8 @@ public void TestRemoteAttacherParameterDeltaReading_NoLookBack()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) >= convert(Date,'{attacher.DeltaReadingStartDate:yyyy-MM-dd HH:mm:ss.fff}') AND CAST(date as Date) < convert(Date,'{attacher.DeltaReadingStartDate.AddDays(attacher.DeltaReadingLookForwardDays):yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date >= convert(Date,'{attacher.DeltaReadingStartDate:yyyy-MM-dd HH:mm:ss.fff}') AND date < convert(Date,'{attacher.DeltaReadingStartDate.AddDays(attacher.DeltaReadingLookForwardDays):yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterDeltaReading_NoLookForward()
Expand All @@ -162,7 +169,8 @@ public void TestRemoteAttacherParameterDeltaReading_NoLookForward()
{
LastLoadTime = DateTime.Now
};
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE CAST(date as Date) >= convert(Date,'{attacher.DeltaReadingStartDate.AddDays(-attacher.DeltaReadingLookBackDays):yyyy-MM-dd HH:mm:ss.fff}') AND CAST(date as Date) < convert(Date,'{attacher.DeltaReadingStartDate:yyyy-MM-dd HH:mm:ss.fff}')"));
// Updated: No longer casting column to Date
Assert.That(attacher.SqlHistoricalDataFilter(lmd, DatabaseType.MicrosoftSQLServer,attacher.RemoteTableDateColumn), Is.EqualTo($" WHERE date >= convert(Date,'{attacher.DeltaReadingStartDate.AddDays(-attacher.DeltaReadingLookBackDays):yyyy-MM-dd HH:mm:ss.fff}') AND date < convert(Date,'{attacher.DeltaReadingStartDate:yyyy-MM-dd HH:mm:ss.fff}')"));
}
[Test]
public void TestRemoteAttacherParameterDeltaReadingNoDates()
Expand Down
21 changes: 11 additions & 10 deletions Rdmp.Core/DataLoad/Modules/Attachers/RemoteAttacher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,31 +104,32 @@ private string ConvertDateString(DatabaseType dbType, string dateString)

public string SqlHistoricalDataFilter(ILoadMetadata loadMetadata, DatabaseType dbType, string column)
{
const string dateConvert = "Date";
// Don't cast to Date - preserve time component for accurate filtering
// Casting to Date causes timezone-sensitive failures when time crosses midnight

switch (HistoricalFetchDuration)
{
case AttacherHistoricalDurations.Past24Hours:
return $" WHERE CAST({column} as {dateConvert}) > {GetCorrectDateAddForDatabaseType(dbType, "DAY", "-1")}";
return $" WHERE {column} > {GetCorrectDateAddForDatabaseType(dbType, "DAY", "-1")}";
case AttacherHistoricalDurations.Past7Days:
return $" WHERE CAST({column} as {dateConvert}) > {GetCorrectDateAddForDatabaseType(dbType, "WEEK", "-1")}";
return $" WHERE {column} > {GetCorrectDateAddForDatabaseType(dbType, "WEEK", "-1")}";
case AttacherHistoricalDurations.PastMonth:
return $" WHERE CAST({column} as {dateConvert}) > {GetCorrectDateAddForDatabaseType(dbType, "MONTH", "-1")}";
return $" WHERE {column} > {GetCorrectDateAddForDatabaseType(dbType, "MONTH", "-1")}";
case AttacherHistoricalDurations.PastYear:
return $" WHERE CAST({column} as {dateConvert}) > {GetCorrectDateAddForDatabaseType(dbType, "YEAR", "-1")}";
return $" WHERE {column} > {GetCorrectDateAddForDatabaseType(dbType, "YEAR", "-1")}";
case AttacherHistoricalDurations.SinceLastUse:
return loadMetadata.LastLoadTime is not null ? $" WHERE CAST({column} as {dateConvert}) > {ConvertDateString(dbType, loadMetadata.LastLoadTime.GetValueOrDefault().ToString(RemoteTableDateFormat))}" : "";
return loadMetadata.LastLoadTime is not null ? $" WHERE {column} > {ConvertDateString(dbType, loadMetadata.LastLoadTime.GetValueOrDefault().ToString(RemoteTableDateFormat))}" : "";
case AttacherHistoricalDurations.Custom:
if (CustomFetchDurationStartDate == DateTime.MinValue && CustomFetchDurationEndDate != DateTime.MinValue)
{
//end only
return $" WHERE CAST({column} as {dateConvert}) <= {ConvertDateString(dbType, CustomFetchDurationEndDate.ToString(RemoteTableDateFormat))}";
return $" WHERE {column} <= {ConvertDateString(dbType, CustomFetchDurationEndDate.ToString(RemoteTableDateFormat))}";
}

if (CustomFetchDurationStartDate != DateTime.MinValue && CustomFetchDurationEndDate == DateTime.MinValue)
{
//start only
return $" WHERE CAST({column} as {dateConvert}) >= {ConvertDateString(dbType, CustomFetchDurationStartDate.ToString(RemoteTableDateFormat))}";
return $" WHERE {column} >= {ConvertDateString(dbType, CustomFetchDurationStartDate.ToString(RemoteTableDateFormat))}";
}

if (CustomFetchDurationStartDate == DateTime.MinValue && CustomFetchDurationEndDate == DateTime.MinValue)
Expand All @@ -137,12 +138,12 @@ public string SqlHistoricalDataFilter(ILoadMetadata loadMetadata, DatabaseType d
return "";
}

return $" WHERE CAST({column} as {dateConvert}) >= {ConvertDateString(dbType, CustomFetchDurationStartDate.ToString(RemoteTableDateFormat))} AND CAST({column} as {dateConvert}) <= {ConvertDateString(dbType, CustomFetchDurationEndDate.ToString(RemoteTableDateFormat))}";
return $" WHERE {column} >= {ConvertDateString(dbType, CustomFetchDurationStartDate.ToString(RemoteTableDateFormat))} AND {column} <= {ConvertDateString(dbType, CustomFetchDurationEndDate.ToString(RemoteTableDateFormat))}";
case AttacherHistoricalDurations.DeltaReading:
if (DeltaReadingStartDate == DateTime.MinValue) return "";
var startDate = DeltaReadingStartDate.AddDays(-DeltaReadingLookBackDays);
var endDate = DeltaReadingStartDate.AddDays(DeltaReadingLookForwardDays);
return $" WHERE CAST({column} as {dateConvert}) >= {ConvertDateString(dbType, startDate.ToString(RemoteTableDateFormat))} AND CAST({column} as {dateConvert}) < {ConvertDateString(dbType, endDate.ToString(RemoteTableDateFormat))}";
return $" WHERE {column} >= {ConvertDateString(dbType, startDate.ToString(RemoteTableDateFormat))} AND {column} < {ConvertDateString(dbType, endDate.ToString(RemoteTableDateFormat))}";
default:
return "";
}
Expand Down
Loading