28 lines
712 B
C#
28 lines
712 B
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
using SqlKata;
|
||
|
|
||
|
namespace PluralKit.Core
|
||
|
{
|
||
|
internal class QueryPatchWrapper
|
||
|
{
|
||
|
private Dictionary<string, object> _dict = new();
|
||
|
|
||
|
public QueryPatchWrapper With<T>(string columnName, Partial<T> partialValue)
|
||
|
{
|
||
|
if (partialValue.IsPresent)
|
||
|
_dict.Add(columnName, partialValue);
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public Query ToQuery(Query q) => q.AsUpdate(_dict);
|
||
|
}
|
||
|
|
||
|
internal static class SqlKataExtensions
|
||
|
{
|
||
|
internal static Query ApplyPatch(this Query query, Func<QueryPatchWrapper, QueryPatchWrapper> func)
|
||
|
=> func(new QueryPatchWrapper()).ToQuery(query);
|
||
|
}
|
||
|
}
|