using System.Data; using System.Globalization; using Dapper; namespace ErsatzTV.Infrastructure.Sqlite.Data; public abstract class SqliteTypeHandler : SqlMapper.TypeHandler { // Parameters are converted by Microsoft.Data.Sqlite public override void SetValue(IDbDataParameter parameter, T? value) => parameter.Value = value; } public class DateTimeOffsetHandler : SqliteTypeHandler { public override DateTimeOffset Parse(object value) => DateTimeOffset.Parse((string)value, CultureInfo.InvariantCulture); } public class GuidHandler : SqliteTypeHandler { public override Guid Parse(object value) => Guid.Parse((string)value); } public class TimeSpanHandler : SqliteTypeHandler { public override TimeSpan Parse(object value) => TimeSpan.Parse((string)value, CultureInfo.InvariantCulture); }