Browse Source

Fix in backup.

pull/860/head
Sebastian 4 years ago
parent
commit
8e44562237
  1. 3
      backend/src/Squidex.Domain.Apps.Entities/Apps/BackupApps.cs
  2. 6
      backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs
  3. 3
      backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/IAppsIndex.cs
  4. 2
      backend/src/Squidex.Domain.Apps.Entities/Backup/IBackupHandler.cs
  5. 2
      backend/src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs
  6. 5
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/BackupAppsTests.cs
  7. 9
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Indexes/AppsIndexTests.cs

3
backend/src/Squidex.Domain.Apps.Entities/Apps/BackupApps.cs

@ -135,10 +135,11 @@ namespace Squidex.Domain.Apps.Entities.Apps
await appsIndex.RemoveReservationAsync(appReservation); await appsIndex.RemoveReservationAsync(appReservation);
} }
public async Task CompleteRestoreAsync(RestoreContext context) public async Task CompleteRestoreAsync(RestoreContext context, string appName)
{ {
await rebuilder.InsertManyAsync<AppDomainObject, AppDomainObject.State>(Enumerable.Repeat(context.AppId, 1), 1, default); await rebuilder.InsertManyAsync<AppDomainObject, AppDomainObject.State>(Enumerable.Repeat(context.AppId, 1), 1, default);
await appsIndex.RegisterAsync(context.AppId, appName);
await appsIndex.RemoveReservationAsync(appReservation); await appsIndex.RemoveReservationAsync(appReservation);
} }

6
backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs

@ -34,6 +34,12 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
this.grainCache = grainCache; this.grainCache = grainCache;
} }
public Task RegisterAsync(DomainId id, string name,
CancellationToken ct = default)
{
return Cache().AddAsync(id, name);
}
public Task RemoveReservationAsync(string? token, public Task RemoveReservationAsync(string? token,
CancellationToken ct = default) CancellationToken ct = default)
{ {

3
backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/IAppsIndex.cs

@ -24,6 +24,9 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
Task<string?> ReserveAsync(DomainId id, string name, Task<string?> ReserveAsync(DomainId id, string name,
CancellationToken ct = default); CancellationToken ct = default);
Task RegisterAsync(DomainId id, string name,
CancellationToken ct = default);
Task RemoveReservationAsync(string? token, Task RemoveReservationAsync(string? token,
CancellationToken ct = default); CancellationToken ct = default);
} }

2
backend/src/Squidex.Domain.Apps.Entities/Backup/IBackupHandler.cs

@ -43,7 +43,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task CompleteRestoreAsync(RestoreContext context) public Task CompleteRestoreAsync(RestoreContext context, string appName)
{ {
return Task.CompletedTask; return Task.CompletedTask;
} }

2
backend/src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs

@ -168,7 +168,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
{ {
using (Telemetry.Activities.StartActivity($"{handler.GetType().Name}/CompleteRestoreAsync")) using (Telemetry.Activities.StartActivity($"{handler.GetType().Name}/CompleteRestoreAsync"))
{ {
await handler.CompleteRestoreAsync(runningContext); await handler.CompleteRestoreAsync(runningContext, CurrentJob.NewAppName!);
} }
Log($"Completed {handler.Name}"); Log($"Completed {handler.Name}");

5
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/BackupAppsTests.cs

@ -79,11 +79,14 @@ namespace Squidex.Domain.Apps.Entities.Apps
Name = appName Name = appName
}), context, ct); }), context, ct);
await sut.CompleteRestoreAsync(context); await sut.CompleteRestoreAsync(context, appName);
A.CallTo(() => appsIndex.RemoveReservationAsync("Reservation", default)) A.CallTo(() => appsIndex.RemoveReservationAsync("Reservation", default))
.MustHaveHappened(); .MustHaveHappened();
A.CallTo(() => appsIndex.RegisterAsync(appId, appName, default))
.MustHaveHappened();
A.CallTo(() => rebuilder.InsertManyAsync<AppDomainObject, AppDomainObject.State>(A<IEnumerable<DomainId>>.That.Is(appId), 1, default)) A.CallTo(() => rebuilder.InsertManyAsync<AppDomainObject, AppDomainObject.State>(A<IEnumerable<DomainId>>.That.Is(appId), 1, default))
.MustHaveHappened(); .MustHaveHappened();
} }

9
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Indexes/AppsIndexTests.cs

@ -320,6 +320,15 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
.MustHaveHappened(); .MustHaveHappened();
} }
[Fact]
public async Task Should_forward_registation()
{
await sut.RegisterAsync(appId.Id, appId.Name);
A.CallTo(() => cache.AddAsync(appId.Id, appId.Name))
.MustHaveHappened();
}
private (IAppEntity, IAppGrain) CreateApp(long version = 0, bool fromClient = false, bool isArchived = false) private (IAppEntity, IAppGrain) CreateApp(long version = 0, bool fromClient = false, bool isArchived = false)
{ {
var app = A.Fake<IAppEntity>(); var app = A.Fake<IAppEntity>();

Loading…
Cancel
Save