Skip to content

Commit e5ec8dd

Browse files
committed
date work
1 parent f98cda4 commit e5ec8dd

File tree

2 files changed

+35
-26
lines changed

2 files changed

+35
-26
lines changed

src/Serilog.Sinks.AzureTableStorage/Sinks/AzureTableStorage/DefaultKeyGenerator.cs

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,10 @@ public static string GenerateRowKey(DateTime eventTime)
142142
public static string GeneratePartitionKeyQuery(DateOnly date, TimeSpan offset)
143143
{
144144
// date is assumed to be in local time, will be converted to UTC
145-
var eventTime = new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, offset);
146-
return GeneratePartitionKeyQuery(eventTime);
145+
var startTime = new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, offset);
146+
var endTime = startTime.AddDays(1);
147+
148+
return GeneratePartitionKeyQuery(startTime, endTime);
147149
}
148150

149151
/// <summary>
@@ -155,42 +157,44 @@ public static string GeneratePartitionKeyQuery(DateOnly date, TimeSpan offset)
155157
public static string GeneratePartitionKeyQuery(DateOnly date, TimeZoneInfo zone = null)
156158
{
157159
// date is assumed to be in local time, will be converted to UTC
158-
zone ??= TimeZoneInfo.Local;
159-
160-
var dateTime = date.ToDateTime(TimeOnly.MinValue);
161-
var offset = zone.GetUtcOffset(dateTime);
160+
var startTime = date.ToDateTimeOffset(zone);
161+
var endTime = date.AddDays(1).ToDateTimeOffset(zone);
162162

163-
var eventTime = new DateTimeOffset(dateTime, offset);
164-
return GeneratePartitionKeyQuery(eventTime);
163+
return GeneratePartitionKeyQuery(startTime, endTime);
165164
}
166165
#endif
167166

168167
/// <summary>
169-
/// Generates the partition key query using the specified <paramref name="eventTime"/>.
168+
/// Generates the partition key query using the specified <paramref name="startDate"/> and <paramref name="endDate"/>.
170169
/// </summary>
171-
/// <param name="eventTime">The date to use for query.</param>
170+
/// <param name="startDate">The start date to use for query.</param>
171+
/// <param name="endDate">The end date to use for query.</param>
172172
/// <returns>An Azure Table partiion key query.</returns>
173-
public static string GeneratePartitionKeyQuery(DateTime eventTime)
173+
public static string GeneratePartitionKeyQuery(DateTime startDate, DateTime endDate)
174174
{
175-
var dateTime = eventTime.ToUniversalTime();
176-
var dateTimeOffset = new DateTimeOffset(dateTime, TimeSpan.Zero);
175+
var startTime = startDate.ToUniversalTime();
176+
var startTimeOffset = new DateTimeOffset(startTime, TimeSpan.Zero);
177177

178-
return GeneratePartitionKeyQuery(dateTimeOffset);
178+
var endTime = endDate.ToUniversalTime();
179+
var endTimeOffset = new DateTimeOffset(endTime, TimeSpan.Zero);
180+
181+
return GeneratePartitionKeyQuery(startTimeOffset, endTimeOffset);
179182
}
180183

181184
/// <summary>
182-
/// Generates the partition key query using the specified <paramref name="eventTime"/>.
185+
/// Generates the partition key query using the specified <paramref name="startDate"/> and <paramref name="endDate"/>.
183186
/// </summary>
184-
/// <param name="eventTime">The date to use for query.</param>
187+
/// <param name="startDate">The start date to use for query.</param>
188+
/// <param name="endDate">The end date to use for query.</param>
185189
/// <returns>An Azure Table partiion key query.</returns>
186-
public static string GeneratePartitionKeyQuery(DateTimeOffset eventTime)
190+
public static string GeneratePartitionKeyQuery(DateTimeOffset startDate, DateTimeOffset endDate)
187191
{
188-
var dateTime = eventTime.ToUniversalTime();
192+
var startTime = startDate.ToUniversalTime();
193+
var endTime = endDate.ToUniversalTime();
189194

190-
var upper = dateTime.ToReverseChronological().Ticks.ToString("D19");
191-
var lower = dateTime.AddDays(1).ToReverseChronological().Ticks.ToString("D19");
195+
var upper = startTime.ToReverseChronological().Ticks.ToString("D19");
196+
var lower = endTime.ToReverseChronological().Ticks.ToString("D19");
192197

193198
return $"({PartitionKeyName} ge '{lower}') and ({PartitionKeyName} lt '{upper}')";
194199
}
195-
196200
}

test/Serilog.Sinks.AzureTableStorage.Tests/DefaultKeyGeneratorTests.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,21 +115,26 @@ public void GeneratePartitionKeyQueryDateOnly()
115115
[Fact]
116116
public void GeneratePartitionKeyQueryDateTime()
117117
{
118-
var dateTime = new DateTimeOffset(2024, 4, 1, 0, 0, 0, TimeSpan.FromHours(-5));
119-
var eventTime = dateTime.UtcDateTime;
118+
var startDate = new DateTimeOffset(2024, 4, 1, 0, 0, 0, TimeSpan.FromHours(-5));
119+
var startTime = startDate.DateTime;
120+
121+
var endDate = new DateTimeOffset(2024, 4, 2, 0, 0, 0, TimeSpan.FromHours(-5));
122+
var endTime = endDate.DateTime;
120123

121-
var partitionKeyQuery = DefaultKeyGenerator.GeneratePartitionKeyQuery(eventTime);
124+
var partitionKeyQuery = DefaultKeyGenerator.GeneratePartitionKeyQuery(startTime, endTime);
122125
partitionKeyQuery.Should().NotBeNull();
123126
partitionKeyQuery.Should().Be("(PartitionKey ge '2516902667999999999') and (PartitionKey lt '2516903531999999999')");
124127
}
125128

126129
[Fact]
127130
public void GeneratePartitionKeyQueryDateTimeOffset()
128131
{
129-
var dateTime = new DateTimeOffset(2024, 4, 1, 0, 0, 0, TimeSpan.FromHours(-5));
132+
var startTime = new DateTimeOffset(2024, 4, 1, 0, 0, 0, TimeSpan.FromHours(-5));
133+
var endTime = new DateTimeOffset(2024, 4, 2, 0, 0, 0, TimeSpan.FromHours(-5));
130134

131-
var partitionKeyQuery = DefaultKeyGenerator.GeneratePartitionKeyQuery(dateTime);
135+
var partitionKeyQuery = DefaultKeyGenerator.GeneratePartitionKeyQuery(startTime, endTime);
132136
partitionKeyQuery.Should().NotBeNull();
133137
partitionKeyQuery.Should().Be("(PartitionKey ge '2516902667999999999') and (PartitionKey lt '2516903531999999999')");
134138
}
139+
135140
}

0 commit comments

Comments
 (0)