This commit is contained in:
Petal Ladenson 2024-12-06 01:17:19 +01:00 committed by GitHub
commit 2bdcc1d3c0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 65 additions and 3 deletions

View file

@ -0,0 +1,7 @@
-- database version 47
-- remove unused functions
drop function trg_msgcount_decrement cascade;
drop function trg_msgcount_increment cascade;
update info set schema_version = 49;

View file

@ -110,4 +110,27 @@ public partial class ModelRepository
await _db.ExecuteQuery(query);
}
public async Task UpdateMemberForDeletedMessage(MemberId id, int msgCount, int numberToDecrement = 1)
{
if (msgCount <= 0) return;
var query = new Query("members")
.When(msgCount > numberToDecrement,
// when message count is higher than number we're removing
q => q.AsUpdate(new
{
message_count = new UnsafeLiteral($"message_count - {numberToDecrement}")
}),
// when this is the only/last message(s) (if the db for some reason thinks there are no messages we already returned)
q => q.AsUpdate(new
{
message_count = 0,
last_message_timestamp = new UnsafeLiteral("null")
})
)
.Where("id", id);
await _db.ExecuteQuery(query);
}
}

View file

@ -26,6 +26,9 @@ public partial class ModelRepository
public Task<PKMessage?> GetMessage(ulong id)
=> _db.QueryFirst<PKMessage?>(new Query("messages").Where("mid", id), messages: true);
public Task<IEnumerable<PKMessage>> GetMessagesBulk(IReadOnlyCollection<ulong> ids)
=> _db.Query<PKMessage>(new Query("messages").WhereIn("mid", ids.Select(id => (long)id).ToArray()));
public async Task<FullMessage?> GetFullMessage(ulong id)
{
var rawMessage = await GetMessage(id);

View file

@ -9,7 +9,7 @@ namespace PluralKit.Core;
internal class DatabaseMigrator
{
private const string RootPath = "PluralKit.Core.Database"; // "resource path" root for SQL files
private const int TargetSchemaVersion = 48;
private const int TargetSchemaVersion = 49;
private readonly ILogger _logger;
public DatabaseMigrator(ILogger logger)