refactor: change ulong[] to List<ulong> for better ergonomics
This commit is contained in:
parent
e12bd6194b
commit
4eb5c16451
8 changed files with 37 additions and 46 deletions
|
|
@ -112,11 +112,12 @@ public class DatabasePool
|
|||
|
||||
SqlMapper.RemoveTypeMap(typeof(ulong));
|
||||
SqlMapper.AddTypeHandler(new UlongEncodeAsLongHandler());
|
||||
SqlMapper.AddTypeHandler(new UlongArrayHandler());
|
||||
|
||||
SqlMapper.AddTypeHandler(new PassthroughTypeHandler<Instant>());
|
||||
SqlMapper.AddTypeHandler(new JsonTypeHandler<Guild.ChannelConfig>());
|
||||
SqlMapper.AddTypeHandler(new JsonTypeHandler<Guild.MessageConfig>());
|
||||
|
||||
SqlMapper.AddTypeHandler(new UlongListHandler());
|
||||
}
|
||||
|
||||
// Copied from PluralKit:
|
||||
|
|
@ -132,34 +133,34 @@ public class DatabasePool
|
|||
|
||||
private class UlongEncodeAsLongHandler : SqlMapper.TypeHandler<ulong>
|
||||
{
|
||||
public override void SetValue(IDbDataParameter parameter, ulong value) =>
|
||||
parameter.Value = (long)value;
|
||||
|
||||
public override ulong Parse(object value) =>
|
||||
// Cast to long to unbox, then to ulong (???)
|
||||
(ulong)(long)value;
|
||||
|
||||
public override void SetValue(IDbDataParameter parameter, ulong value) =>
|
||||
parameter.Value = (long)value;
|
||||
}
|
||||
|
||||
private class UlongArrayHandler : SqlMapper.TypeHandler<ulong[]>
|
||||
private class UlongListHandler : SqlMapper.TypeHandler<List<ulong>>
|
||||
{
|
||||
public override void SetValue(IDbDataParameter parameter, ulong[]? value) =>
|
||||
parameter.Value = value != null ? Array.ConvertAll(value, i => (long)i) : null;
|
||||
public override void SetValue(IDbDataParameter parameter, List<ulong>? value) =>
|
||||
parameter.Value = value?.Select(i => (long)i).ToArray();
|
||||
|
||||
public override ulong[] Parse(object value) =>
|
||||
Array.ConvertAll((long[])value, i => (ulong)i);
|
||||
public override List<ulong>? Parse(object value) =>
|
||||
((long[])value).Select(i => (ulong)i).ToList();
|
||||
}
|
||||
|
||||
private class JsonTypeHandler<T> : SqlMapper.TypeHandler<T>
|
||||
{
|
||||
public override void SetValue(IDbDataParameter parameter, T? value) =>
|
||||
parameter.Value = JsonSerializer.Serialize(value);
|
||||
|
||||
public override T Parse(object value)
|
||||
{
|
||||
var json = (string)value;
|
||||
return JsonSerializer.Deserialize<T>(json)
|
||||
?? throw new CataloggerError("JsonTypeHandler<T> returned null");
|
||||
}
|
||||
|
||||
public override void SetValue(IDbDataParameter parameter, T? value) =>
|
||||
parameter.Value = JsonSerializer.Serialize(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue