using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace FinlyticCore.Converters; /// /// ValueConverter for DateTime guaranteeing DateTimeKind.Utc when writing to and reading from PostgreSQL. /// public class UtcDateTimeConverter : ValueConverter { public UtcDateTimeConverter() : base( v => v.Kind == DateTimeKind.Utc ? v : DateTime.SpecifyKind(v, DateTimeKind.Utc), v => DateTime.SpecifyKind(v, DateTimeKind.Utc)) { } } /// /// ValueConverter for nullable DateTime? guaranteeing DateTimeKind.Utc when writing to and reading from PostgreSQL. /// public class NullableUtcDateTimeConverter : ValueConverter { public NullableUtcDateTimeConverter() : base( v => v.HasValue ? (v.Value.Kind == DateTimeKind.Utc ? v.Value : DateTime.SpecifyKind(v.Value, DateTimeKind.Utc)) : v, v => v.HasValue ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : v) { } }