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)
{
}
}