refactor: remove some unused code
This commit is contained in:
parent
1918c56937
commit
04d78e3348
@ -18,7 +18,7 @@ public record GatewayStatusUpdate
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ulong? Since { get; init; }
|
public ulong? Since { get; init; }
|
||||||
public ActivityPartial[]? Activities { get; init; }
|
public Activity[]? Activities { get; init; }
|
||||||
public UserStatus Status { get; init; }
|
public UserStatus Status { get; init; }
|
||||||
public bool Afk { get; init; }
|
public bool Afk { get; init; }
|
||||||
}
|
}
|
@ -1,22 +1,17 @@
|
|||||||
namespace Myriad.Types
|
namespace Myriad.Types;
|
||||||
|
|
||||||
|
public record Activity
|
||||||
{
|
{
|
||||||
public record Activity: ActivityPartial
|
public string Name { get; init; }
|
||||||
{
|
public ActivityType Type { get; init; }
|
||||||
}
|
public string? Url { get; init; }
|
||||||
|
}
|
||||||
|
|
||||||
public record ActivityPartial
|
public enum ActivityType
|
||||||
{
|
{
|
||||||
public string Name { get; init; }
|
Game = 0,
|
||||||
public ActivityType Type { get; init; }
|
Streaming = 1,
|
||||||
public string? Url { get; init; }
|
Listening = 2,
|
||||||
}
|
Custom = 4,
|
||||||
|
Competing = 5
|
||||||
public enum ActivityType
|
|
||||||
{
|
|
||||||
Game = 0,
|
|
||||||
Streaming = 1,
|
|
||||||
Listening = 2,
|
|
||||||
Custom = 4,
|
|
||||||
Competing = 5
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,6 +0,0 @@
|
|||||||
namespace Myriad.Types
|
|
||||||
{
|
|
||||||
public static class Permissions
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
@ -122,7 +122,7 @@ public class Bot
|
|||||||
{
|
{
|
||||||
Activities = new[]
|
Activities = new[]
|
||||||
{
|
{
|
||||||
new ActivityPartial {Name = "Restarting... (please wait)", Type = ActivityType.Game}
|
new Activity {Name = "Restarting... (please wait)", Type = ActivityType.Game}
|
||||||
},
|
},
|
||||||
Status = GatewayStatusUpdate.UserStatus.Idle
|
Status = GatewayStatusUpdate.UserStatus.Idle
|
||||||
})));
|
})));
|
||||||
@ -256,7 +256,7 @@ public class Bot
|
|||||||
{
|
{
|
||||||
Activities = new[]
|
Activities = new[]
|
||||||
{
|
{
|
||||||
new ActivityPartial
|
new Activity
|
||||||
{
|
{
|
||||||
Name = $"pk;help | in {totalGuilds:N0} servers | shard #{shard.ShardId}",
|
Name = $"pk;help | in {totalGuilds:N0} servers | shard #{shard.ShardId}",
|
||||||
Type = ActivityType.Game,
|
Type = ActivityType.Game,
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
#nullable enable
|
|
||||||
using System;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace PluralKit.Core
|
|
||||||
{
|
|
||||||
public class QueryBuilder
|
|
||||||
{
|
|
||||||
private readonly string? _conflictField;
|
|
||||||
private readonly string? _condition;
|
|
||||||
private readonly StringBuilder _insertFragment = new StringBuilder();
|
|
||||||
private readonly StringBuilder _valuesFragment = new StringBuilder();
|
|
||||||
private readonly StringBuilder _updateFragment = new StringBuilder();
|
|
||||||
private bool _firstInsert = true;
|
|
||||||
private bool _firstUpdate = true;
|
|
||||||
public QueryType Type { get; }
|
|
||||||
public string Table { get; }
|
|
||||||
|
|
||||||
private QueryBuilder(QueryType type, string table, string? conflictField, string? condition)
|
|
||||||
{
|
|
||||||
Type = type;
|
|
||||||
Table = table;
|
|
||||||
_conflictField = conflictField;
|
|
||||||
_condition = condition;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static QueryBuilder Insert(string table) => new QueryBuilder(QueryType.Insert, table, null, null);
|
|
||||||
public static QueryBuilder Update(string table, string condition) => new QueryBuilder(QueryType.Update, table, null, condition);
|
|
||||||
public static QueryBuilder Upsert(string table, string conflictField) => new QueryBuilder(QueryType.Upsert, table, conflictField, null);
|
|
||||||
|
|
||||||
public QueryBuilder Constant(string fieldName, string paramName)
|
|
||||||
{
|
|
||||||
if (_firstInsert) _firstInsert = false;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_insertFragment.Append(", ");
|
|
||||||
_valuesFragment.Append(", ");
|
|
||||||
}
|
|
||||||
|
|
||||||
_insertFragment.Append(fieldName);
|
|
||||||
_valuesFragment.Append(paramName);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public QueryBuilder Variable(string fieldName, string paramName)
|
|
||||||
{
|
|
||||||
Constant(fieldName, paramName);
|
|
||||||
|
|
||||||
if (_firstUpdate) _firstUpdate = false;
|
|
||||||
else _updateFragment.Append(", ");
|
|
||||||
|
|
||||||
_updateFragment.Append(fieldName);
|
|
||||||
_updateFragment.Append(" = ");
|
|
||||||
_updateFragment.Append(paramName);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Build(string? suffix = null)
|
|
||||||
{
|
|
||||||
if (_firstInsert)
|
|
||||||
throw new ArgumentException("No fields have been added to the query.");
|
|
||||||
|
|
||||||
StringBuilder query = new StringBuilder(Type switch
|
|
||||||
{
|
|
||||||
QueryType.Insert => $"insert into {Table} ({_insertFragment}) values ({_valuesFragment})",
|
|
||||||
QueryType.Upsert => $"insert into {Table} ({_insertFragment}) values ({_valuesFragment}) on conflict ({_conflictField}) do update set {_updateFragment}",
|
|
||||||
QueryType.Update => $"update {Table} set {_updateFragment}",
|
|
||||||
_ => throw new ArgumentOutOfRangeException($"Unknown query type {Type}")
|
|
||||||
});
|
|
||||||
|
|
||||||
if (Type == QueryType.Update && _condition != null)
|
|
||||||
query.Append($" where {_condition}");
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(suffix))
|
|
||||||
query.Append($" {suffix}");
|
|
||||||
query.Append(";");
|
|
||||||
|
|
||||||
return query.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum QueryType
|
|
||||||
{
|
|
||||||
Insert,
|
|
||||||
Update,
|
|
||||||
Upsert
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
using Dapper;
|
|
||||||
|
|
||||||
namespace PluralKit.Core;
|
|
||||||
|
|
||||||
public class UpdateQueryBuilder
|
|
||||||
{
|
|
||||||
private readonly DynamicParameters _params = new();
|
|
||||||
private readonly QueryBuilder _qb;
|
|
||||||
|
|
||||||
private UpdateQueryBuilder(QueryBuilder qb)
|
|
||||||
{
|
|
||||||
_qb = qb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static UpdateQueryBuilder Insert(string table) => new(QueryBuilder.Insert(table));
|
|
||||||
|
|
||||||
public static UpdateQueryBuilder Update(string table, string condition) =>
|
|
||||||
new(QueryBuilder.Update(table, condition));
|
|
||||||
|
|
||||||
public static UpdateQueryBuilder Upsert(string table, string conflictField) =>
|
|
||||||
new(QueryBuilder.Upsert(table, conflictField));
|
|
||||||
|
|
||||||
public UpdateQueryBuilder WithConstant<T>(string name, T value)
|
|
||||||
{
|
|
||||||
_params.Add(name, value);
|
|
||||||
_qb.Constant(name, $"@{name}");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdateQueryBuilder With<T>(string columnName, T value)
|
|
||||||
{
|
|
||||||
_params.Add(columnName, value);
|
|
||||||
_qb.Variable(columnName, $"@{columnName}");
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdateQueryBuilder With<T>(string columnName, Partial<T> partialValue) =>
|
|
||||||
partialValue.IsPresent ? With(columnName, partialValue.Value) : this;
|
|
||||||
|
|
||||||
public (string Query, DynamicParameters Parameters) Build(string suffix = "") => (_qb.Build(suffix), _params);
|
|
||||||
}
|
|
@ -75,12 +75,4 @@ public static class PartialExt
|
|||||||
|
|
||||||
public static Partial<TOut> Map<TIn, TOut>(this Partial<TIn> pt, Func<TIn, TOut> fn) =>
|
public static Partial<TOut> Map<TIn, TOut>(this Partial<TIn> pt, Func<TIn, TOut> fn) =>
|
||||||
pt.IsPresent ? Partial<TOut>.Present(fn.Invoke(pt.Value)) : Partial<TOut>.Absent;
|
pt.IsPresent ? Partial<TOut>.Present(fn.Invoke(pt.Value)) : Partial<TOut>.Absent;
|
||||||
|
|
||||||
public static void Apply<T>(this Partial<T> pt, DynamicParameters bag, QueryBuilder qb, string fieldName)
|
|
||||||
{
|
|
||||||
if (!pt.IsPresent) return;
|
|
||||||
|
|
||||||
bag.Add(fieldName, pt.Value);
|
|
||||||
qb.Variable(fieldName, $"@{fieldName}");
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,39 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace PluralKit.Core
|
|
||||||
{
|
|
||||||
public static class TaskUtils
|
|
||||||
{
|
|
||||||
public static async Task CatchException(this Task task, Action<Exception> handler)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await task;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
handler(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task<TResult> TimeoutAfter<TResult>(this Task<TResult> task, TimeSpan? timeout)
|
|
||||||
{
|
|
||||||
// https://stackoverflow.com/a/22078975
|
|
||||||
using (var timeoutCancellationTokenSource = new CancellationTokenSource())
|
|
||||||
{
|
|
||||||
var completedTask = await Task.WhenAny(task, Task.Delay(timeout ?? TimeSpan.FromMilliseconds(-1), timeoutCancellationTokenSource.Token));
|
|
||||||
if (completedTask == task)
|
|
||||||
{
|
|
||||||
timeoutCancellationTokenSource.Cancel();
|
|
||||||
return await task; // Very important in order to propagate exceptions
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new TimeoutException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user