[backend/core] Refactor DeleteNoteAsync and DeleteUserAsync for improved code reuse (ISH-239)
This commit is contained in:
parent
10d1cb4768
commit
d060d076c1
2 changed files with 9 additions and 22 deletions
|
@ -254,7 +254,7 @@ public class NoteService(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This needs to be called before SaveChangesAsync on create & after on delete
|
/// This needs to be called before SaveChangesAsync on create, and afterwards on delete
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
private async Task UpdateNoteCountersAsync(Note note, bool create)
|
private async Task UpdateNoteCountersAsync(Note note, bool create)
|
||||||
{
|
{
|
||||||
|
@ -489,15 +489,14 @@ public class NoteService(
|
||||||
|
|
||||||
public async Task DeleteNoteAsync(Note note)
|
public async Task DeleteNoteAsync(Note note)
|
||||||
{
|
{
|
||||||
logger.LogDebug("Deleting note {id}", note.Id);
|
logger.LogDebug("Deleting note '{id}' owned by {userId}", note.Id, note.User.Id);
|
||||||
|
|
||||||
db.Update(note.User);
|
|
||||||
db.Remove(note);
|
db.Remove(note);
|
||||||
eventSvc.RaiseNoteDeleted(this, note);
|
eventSvc.RaiseNoteDeleted(this, note);
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
await UpdateNoteCountersAsync(note, false);
|
await UpdateNoteCountersAsync(note, false);
|
||||||
|
|
||||||
if (note.UserHost != null)
|
if (note.User.Host != null)
|
||||||
{
|
{
|
||||||
if (note.User.Uri != null)
|
if (note.User.Uri != null)
|
||||||
{
|
{
|
||||||
|
@ -554,24 +553,7 @@ public class NoteService(
|
||||||
|
|
||||||
logger.LogDebug("Deleting note '{id}' owned by {userId}", note.Id, actor.Id);
|
logger.LogDebug("Deleting note '{id}' owned by {userId}", note.Id, actor.Id);
|
||||||
|
|
||||||
db.Remove(dbNote);
|
await DeleteNoteAsync(dbNote);
|
||||||
eventSvc.RaiseNoteDeleted(this, dbNote);
|
|
||||||
await db.SaveChangesAsync();
|
|
||||||
await UpdateNoteCountersAsync(dbNote, false);
|
|
||||||
|
|
||||||
// ReSharper disable once EntityFramework.NPlusOne.IncompleteDataUsage (same reason as above)
|
|
||||||
if (dbNote.User.Uri != null && dbNote.UserHost != null)
|
|
||||||
{
|
|
||||||
_ = followupTaskSvc.ExecuteTask("UpdateInstanceNoteCounter", async provider =>
|
|
||||||
{
|
|
||||||
var bgDb = provider.GetRequiredService<DatabaseContext>();
|
|
||||||
var bgInstanceSvc = provider.GetRequiredService<InstanceService>();
|
|
||||||
// ReSharper disable once EntityFramework.NPlusOne.IncompleteDataUsage (same reason as above)
|
|
||||||
var dbInstance = await bgInstanceSvc.GetUpdatedInstanceMetadataAsync(dbNote.User);
|
|
||||||
await bgDb.Instances.Where(p => p.Id == dbInstance.Id)
|
|
||||||
.ExecuteUpdateAsync(p => p.SetProperty(i => i.NotesCount, i => i.NotesCount - 1));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UndoAnnounceAsync(ASNote note, User actor)
|
public async Task UndoAnnounceAsync(ASNote note, User actor)
|
||||||
|
|
|
@ -471,6 +471,11 @@ public class UserService(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await DeleteUserAsync(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DeleteUserAsync(User user)
|
||||||
|
{
|
||||||
await queueSvc.BackgroundTaskQueue.EnqueueAsync(new UserDeleteJobData { UserId = user.Id });
|
await queueSvc.BackgroundTaskQueue.EnqueueAsync(new UserDeleteJobData { UserId = user.Id });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue