Update D.NET version and add bulk deletion support

This commit is contained in:
Ske
2019-07-21 17:16:04 +02:00
parent 4fe80749c4
commit 11eabe2e3d
5 changed files with 26 additions and 6 deletions

View File

@@ -17,8 +17,8 @@
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="NodaTime" Version="3.0.0-alpha01" />
<PackageReference Include="NodaTime.Serialization.JsonNet" Version="2.2.0" />
<PackageReference Include="Npgsql" Version="4.0.6" />
<PackageReference Include="Npgsql.NodaTime" Version="4.0.6" />
<PackageReference Include="Npgsql" Version="4.0.8" />
<PackageReference Include="Npgsql.NodaTime" Version="4.0.8" />
<PackageReference Include="Serilog" Version="2.8.0" />
<PackageReference Include="Serilog.Formatting.Compact" Version="1.0.0" />
<PackageReference Include="Serilog.NodaTime" Version="1.0.0" />

View File

@@ -227,6 +227,18 @@ namespace PluralKit {
_logger.Information("Deleted message {Message}", id);
}
public async Task BulkDelete(IReadOnlyCollection<ulong> ids)
{
using (var conn = await _conn.Obtain())
{
// Npgsql doesn't support ulongs in general - we hacked around it for plain ulongs but tbh not worth it for collections of ulong
// Hence we map them to single longs, which *are* supported (this is ok since they're Technically (tm) stored as signed longs in the db anyway)
var foundCount = await conn.ExecuteAsync("delete from messages where mid = any(@Ids)", new {Ids = ids.Select(id => (long) id).ToArray()});
if (foundCount > 0)
_logger.Information("Bulk deleted messages {Messages}, {FoundCount} found", ids, foundCount);
}
}
public async Task<ulong> Count()
{
using (var conn = await _conn.Obtain())