changed DateTime to DateTimeOffset

This commit is contained in:
Paul Koudelka committed 2026-08-10 20:06:51 +02:00
1 parent 9ab196c13c
commit 6985678d2f
8 files changed
+70 -71

No files matched your search

@@ -39,9 +39,9 @@ public sealed record EmbeddingStateFile(
string FileType,
string Fingerprint,
long FileSize,
DateTime CreationUtc,
DateTime LastWriteUtc,
DateTime EmbeddedAtUtc,
DateTimeOffset CreationUtc,
DateTimeOffset LastWriteUtc,
DateTimeOffset EmbeddedAtUtc,
int ChunkCount,
string ComplianceLevel,
int ComplianceLevelRank);
@@ -52,7 +52,7 @@ public sealed record EmbeddingStateChunk(
int? PageNumber,
int ChunkIndex,
string ChunkText,
DateTime EmbeddedAtUtc);
DateTimeOffset EmbeddedAtUtc);
public sealed record EmbeddingStateSearchResult(
string ChunkId,
@@ -70,9 +70,9 @@ public sealed record EmbeddingStateSearchResult(
double Score,
string Fingerprint,
long FileSize,
DateTime CreationUtc,
DateTime LastWriteUtc,
DateTime EmbeddedAtUtc,
DateTimeOffset CreationUtc,
DateTimeOffset LastWriteUtc,
DateTimeOffset EmbeddedAtUtc,
int ChunkCount,
string ComplianceLevel,
int ComplianceLevelRank);
@@ -22,7 +22,7 @@ internal sealed class EmbeddingStateDbContext(DbContextOptions<EmbeddingStateDbC
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var utcDateTimeConverter = new EmbeddingStateDateTimeConverter();
var utcDateTimeOffsetConverter = new EmbeddingStateDateTimeOffsetConverter();
modelBuilder.Entity<EmbeddingStateDataSourceEntity>(entity =>
{
@@ -36,7 +36,7 @@ internal sealed class EmbeddingStateDbContext(DbContextOptions<EmbeddingStateDbC
entity.Property(dataSource => dataSource.EmbeddingSignature).HasColumnName("embedding_signature").IsRequired();
entity.Property(dataSource => dataSource.SourceHash).HasColumnName("source_hash").IsRequired().HasDefaultValue(string.Empty);
entity.Property(dataSource => dataSource.VectorSize).HasColumnName("vector_size").HasDefaultValue(0);
entity.Property(dataSource => dataSource.UpdatedAtUtc).HasColumnName("updated_at_utc").HasConversion(utcDateTimeConverter).IsRequired();
entity.Property(dataSource => dataSource.UpdatedAtUtc).HasColumnName("updated_at_utc").HasConversion(utcDateTimeOffsetConverter).IsRequired();
entity
.HasMany(dataSource => dataSource.Files)
@@ -58,9 +58,9 @@ internal sealed class EmbeddingStateDbContext(DbContextOptions<EmbeddingStateDbC
entity.Property(file => file.FileType).HasColumnName("file_type").IsRequired();
entity.Property(file => file.Fingerprint).HasColumnName("fingerprint").IsRequired();
entity.Property(file => file.FileSize).HasColumnName("file_size");
entity.Property(file => file.CreationUtc).HasColumnName("creation_utc").HasConversion(utcDateTimeConverter).IsRequired();
entity.Property(file => file.LastWriteUtc).HasColumnName("last_write_utc").HasConversion(utcDateTimeConverter).IsRequired();
entity.Property(file => file.EmbeddedAtUtc).HasColumnName("embedded_at_utc").HasConversion(utcDateTimeConverter).IsRequired();
entity.Property(file => file.CreationUtc).HasColumnName("creation_utc").HasConversion(utcDateTimeOffsetConverter).IsRequired();
entity.Property(file => file.LastWriteUtc).HasColumnName("last_write_utc").HasConversion(utcDateTimeOffsetConverter).IsRequired();
entity.Property(file => file.EmbeddedAtUtc).HasColumnName("embedded_at_utc").HasConversion(utcDateTimeOffsetConverter).IsRequired();
entity.Property(file => file.ChunkCount).HasColumnName("chunk_count");
entity.Property(file => file.ComplianceLevel).HasColumnName("compliance_level").IsRequired();
entity.Property(file => file.ComplianceLevelRank).HasColumnName("compliance_level_rank");
@@ -89,7 +89,7 @@ internal sealed class EmbeddingStateDbContext(DbContextOptions<EmbeddingStateDbC
entity.Property(chunk => chunk.PageNumber).HasColumnName("page_number");
entity.Property(chunk => chunk.ChunkIndex).HasColumnName("chunk_index");
entity.Property(chunk => chunk.ChunkText).HasColumnName("chunk_text").IsRequired();
entity.Property(chunk => chunk.EmbeddedAtUtc).HasColumnName("embedded_at_utc").HasConversion(utcDateTimeConverter).IsRequired();
entity.Property(chunk => chunk.EmbeddedAtUtc).HasColumnName("embedded_at_utc").HasConversion(utcDateTimeOffsetConverter).IsRequired();
entity.HasIndex(chunk => chunk.ChunkId).HasDatabaseName("idx_embedding_chunks_chunk_id").IsUnique();
entity.HasIndex(chunk => chunk.ParentFileId).HasDatabaseName("idx_embedding_chunks_parent_file");
@@ -102,9 +102,9 @@ internal sealed class EmbeddingStateDbContext(DbContextOptions<EmbeddingStateDbC
entity.HasNoKey();
entity.ToView("embedding_chunk_search_results");
entity.Property(result => result.CreationUtc).HasConversion(utcDateTimeConverter);
entity.Property(result => result.LastWriteUtc).HasConversion(utcDateTimeConverter);
entity.Property(result => result.EmbeddedAtUtc).HasConversion(utcDateTimeConverter);
entity.Property(result => result.CreationUtc).HasConversion(utcDateTimeOffsetConverter);
entity.Property(result => result.LastWriteUtc).HasConversion(utcDateTimeOffsetConverter);
entity.Property(result => result.EmbeddedAtUtc).HasConversion(utcDateTimeOffsetConverter);
});
}
@@ -134,7 +134,7 @@ internal sealed class EmbeddingStateDataSourceEntity
public int VectorSize { get; set; }
public DateTime UpdatedAtUtc { get; set; }
public DateTimeOffset UpdatedAtUtc { get; set; }
public List<EmbeddingStateFileEntity> Files { get; set; } = [];
}
@@ -157,11 +157,11 @@ internal sealed class EmbeddingStateFileEntity
public long FileSize { get; set; }
public DateTime CreationUtc { get; set; }
public DateTimeOffset CreationUtc { get; set; }
public DateTime LastWriteUtc { get; set; }
public DateTimeOffset LastWriteUtc { get; set; }
public DateTime EmbeddedAtUtc { get; set; }
public DateTimeOffset EmbeddedAtUtc { get; set; }
public int ChunkCount { get; set; }
@@ -188,7 +188,7 @@ internal sealed class EmbeddingStateChunkEntity
public string ChunkText { get; set; } = string.Empty;
public DateTime EmbeddedAtUtc { get; set; }
public DateTimeOffset EmbeddedAtUtc { get; set; }
public EmbeddingStateFileEntity? File { get; set; }
}
@@ -225,11 +225,11 @@ internal sealed class EmbeddingStateSearchResultEntity
public long FileSize { get; set; }
public DateTime CreationUtc { get; set; }
public DateTimeOffset CreationUtc { get; set; }
public DateTime LastWriteUtc { get; set; }
public DateTimeOffset LastWriteUtc { get; set; }
public DateTime EmbeddedAtUtc { get; set; }
public DateTimeOffset EmbeddedAtUtc { get; set; }
public int ChunkCount { get; set; }
@@ -238,22 +238,21 @@ internal sealed class EmbeddingStateSearchResultEntity
public int ComplianceLevelRank { get; set; }
}
internal sealed class EmbeddingStateDateTimeConverter() : ValueConverter<DateTime, string>(
value => EmbeddingStateDateTime.ToUtcText(value),
value => EmbeddingStateDateTime.ParseUtc(value));
internal sealed class EmbeddingStateDateTimeOffsetConverter() : ValueConverter<DateTimeOffset, string>(
value => EmbeddingStateDateTimeOffset.ToUtcText(value),
value => EmbeddingStateDateTimeOffset.ParseUtc(value));
internal static class EmbeddingStateDateTime
internal static class EmbeddingStateDateTimeOffset
{
public static string ToUtcText(DateTime dateTime)
public static string ToUtcText(DateTimeOffset dateTime)
{
var utc = dateTime.Kind is DateTimeKind.Utc ? dateTime : dateTime.ToUniversalTime();
return utc.ToString("O", CultureInfo.InvariantCulture);
return dateTime.ToUniversalTime().ToString("O", CultureInfo.InvariantCulture);
}
public static DateTime ParseUtc(string value)
public static DateTimeOffset ParseUtc(string value)
{
return DateTime.TryParse(value, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var dateTime)
return DateTimeOffset.TryParse(value, CultureInfo.InvariantCulture, DateTimeStyles.None, out var dateTime)
? dateTime.ToUniversalTime()
: DateTime.UnixEpoch;
: DateTimeOffset.UnixEpoch;
}
}
@@ -12,7 +12,7 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "9.0.18");
var utcDateTimeConverter = new EmbeddingStateDateTimeConverter();
var utcDateTimeOffsetConverter = new EmbeddingStateDateTimeOffsetConverter();
modelBuilder.Entity("AIStudio.Tools.Databases.EmbeddingState.EmbeddingStateDataSourceEntity", entity =>
{
@@ -46,8 +46,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.HasColumnName("source_hash")
.HasDefaultValue(string.Empty);
entity.Property<DateTime>("UpdatedAtUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("UpdatedAtUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT")
.HasColumnName("updated_at_utc");
@@ -86,8 +86,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.HasColumnType("INTEGER")
.HasColumnName("compliance_level_rank");
entity.Property<DateTime>("CreationUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("CreationUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT")
.HasColumnName("creation_utc");
@@ -96,8 +96,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.HasColumnType("TEXT")
.HasColumnName("data_source_id");
entity.Property<DateTime>("EmbeddedAtUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("EmbeddedAtUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT")
.HasColumnName("embedded_at_utc");
@@ -120,8 +120,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.HasColumnType("TEXT")
.HasColumnName("fingerprint");
entity.Property<DateTime>("LastWriteUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("LastWriteUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT")
.HasColumnName("last_write_utc");
@@ -173,8 +173,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.HasColumnType("TEXT")
.HasColumnName("chunk_text");
entity.Property<DateTime>("EmbeddedAtUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("EmbeddedAtUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT")
.HasColumnName("embedded_at_utc");
@@ -233,8 +233,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
entity.Property<int>("ComplianceLevelRank")
.HasColumnType("INTEGER");
entity.Property<DateTime>("CreationUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("CreationUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT");
entity.Property<string>("DataSourceId")
@@ -249,8 +249,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.IsRequired()
.HasColumnType("TEXT");
entity.Property<DateTime>("EmbeddedAtUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("EmbeddedAtUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT");
entity.Property<string>("FileName")
@@ -268,8 +268,8 @@ partial class EmbeddingStateDbContextModelSnapshot : ModelSnapshot
.IsRequired()
.HasColumnType("TEXT");
entity.Property<DateTime>("LastWriteUtc")
.HasConversion(utcDateTimeConverter)
entity.Property<DateTimeOffset>("LastWriteUtc")
.HasConversion(utcDateTimeOffsetConverter)
.HasColumnType("TEXT");
entity.Property<int?>("PageNumber")
@@ -139,7 +139,7 @@ public sealed class SqliteEmbeddingStateClientImplementation(
return;
dataSource.VectorSize = vectorSize;
dataSource.UpdatedAtUtc = DateTime.UtcNow;
dataSource.UpdatedAtUtc = DateTimeOffset.UtcNow;
await context.SaveChangesAsync(token);
}
@@ -151,7 +151,7 @@ public sealed class SqliteEmbeddingStateClientImplementation(
return;
dataSource.SourceHash = sourceHash;
dataSource.UpdatedAtUtc = DateTime.UtcNow;
dataSource.UpdatedAtUtc = DateTimeOffset.UtcNow;
await context.SaveChangesAsync(token);
}
@@ -343,7 +343,7 @@ public sealed class SqliteEmbeddingStateClientImplementation(
dataSource.EmbeddingSignature = embeddingSignature;
dataSource.SourceHash = sourceHash;
dataSource.VectorSize = vectorSize;
dataSource.UpdatedAtUtc = DateTime.UtcNow;
dataSource.UpdatedAtUtc = DateTimeOffset.UtcNow;
}
private static void ApplyFile(EmbeddingStateFileEntity fileEntity, string dataSourceId, EmbeddingStateFile file)
@@ -17,8 +17,8 @@ public sealed record VectorStoragePoint(
int ChunkIndex,
string Text,
string Fingerprint,
DateTime CreationUtc,
DateTime LastWriteUtc,
DateTime EmbeddedAtUtc,
DateTimeOffset CreationUtc,
DateTimeOffset LastWriteUtc,
DateTimeOffset EmbeddedAtUtc,
string ComplianceLevel,
int ComplianceLevelRank);