PluralKit/PluralKit.Core/Database/Utils/QueryPatchWrapper.cs

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