sync: improve perf of user account reset & deletion

this adds a new UserId index in all the notesnook collections which
helps to speed up the deletion time during account reset & delete.
This fixes the request timeout issues during both of these processes.
This commit is contained in:
Abdullah Atta
2023-01-16 13:22:57 +05:00
parent 9dc0c99e77
commit 443b4ab715
3 changed files with 15 additions and 8 deletions

View File

@@ -100,17 +100,18 @@ namespace Notesnook.API.Controllers
{
var userId = this.User.FindFirstValue("sub");
Response response = await this.httpClient.ForwardAsync<Response>(this.HttpContextAccessor, $"{Servers.IdentityServer.ToString()}/account/unregister", HttpMethod.Post);
if (!response.Success) return BadRequest();
if (await UserService.DeleteUserAsync(userId, User.FindFirstValue("jti")))
return Ok();
{
Response response = await this.httpClient.ForwardAsync<Response>(this.HttpContextAccessor, $"{Servers.IdentityServer.ToString()}/account/unregister", HttpMethod.Post);
if (!response.Success) return BadRequest();
return Ok();
}
return BadRequest();
}
catch
catch (Exception ex)
{
return BadRequest();
return BadRequest(ex.Message);
}
}
}

View File

@@ -39,8 +39,9 @@ namespace Notesnook.API.Repositories
{
public SyncItemsRepository(IDbContext dbContext) : base(dbContext)
{
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Descending(i => i.DateSynced).Ascending(i => i.UserId)));
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Ascending((i) => i.ItemId).Ascending(i => i.UserId)));
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Ascending(i => i.UserId).Descending(i => i.DateSynced)));
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Ascending(i => i.UserId).Ascending((i) => i.ItemId)));
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Ascending(i => i.UserId)));
}
private readonly List<string> ALGORITHMS = new List<string> { Algorithms.Default };

View File

@@ -173,7 +173,10 @@ namespace Notesnook.API.Services
Repositories.Contents.DeleteByUserId(userId);
Repositories.Settings.DeleteByUserId(userId);
Repositories.Attachments.DeleteByUserId(userId);
Repositories.Reminders.DeleteByUserId(userId);
Repositories.Relations.DeleteByUserId(userId);
Repositories.UsersSettings.Delete((u) => u.UserId == userId);
Repositories.Monographs.DeleteMany((m) => m.UserId == userId);
if (!Constants.IS_SELF_HOSTED)
{
@@ -211,6 +214,8 @@ namespace Notesnook.API.Services
Repositories.Contents.DeleteByUserId(userId);
Repositories.Settings.DeleteByUserId(userId);
Repositories.Attachments.DeleteByUserId(userId);
Repositories.Reminders.DeleteByUserId(userId);
Repositories.Relations.DeleteByUserId(userId);
Repositories.Monographs.DeleteMany((m) => m.UserId == userId);
if (!await unit.Commit()) return false;