Browse Source

app name

pull/311/head
Sebastian Stehle 8 years ago
parent
commit
5d5ce884c9
  1. 2
      src/Squidex.Domain.Apps.Entities/Backup/IRestoreGrain.cs
  2. 18
      src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs
  3. 3
      src/Squidex.Domain.Apps.Entities/Backup/State/RestoreStateJob.cs
  4. 3
      src/Squidex/Areas/Api/Controllers/Backups/Models/RestoreRequest.cs
  5. 2
      src/Squidex/Areas/Api/Controllers/Backups/RestoreController.cs

2
src/Squidex.Domain.Apps.Entities/Backup/IRestoreGrain.cs

@ -14,7 +14,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
{
public interface IRestoreGrain : IGrainWithStringKey
{
Task RestoreAsync(Uri url);
Task RestoreAsync(Uri url, string newAppName = null);
Task<J<IRestoreJob>> GetJobAsync();
}

18
src/Squidex.Domain.Apps.Entities/Backup/RestoreGrain.cs

@ -105,10 +105,15 @@ namespace Squidex.Domain.Apps.Entities.Backup
}
}
public Task RestoreAsync(Uri url)
public Task RestoreAsync(Uri url, string newAppName)
{
Guard.NotNull(url, nameof(url));
if (newAppName != null)
{
Guard.ValidSlug(newAppName, nameof(newAppName));
}
if (CurrentJob?.Status == JobStatus.Started)
{
throw new DomainException("A restore operation is already running.");
@ -117,6 +122,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
state.Job = new RestoreStateJob
{
Id = Guid.NewGuid(),
NewAppName = newAppName,
Started = clock.GetCurrentInstant(),
Status = JobStatus.Started,
Url = url
@ -267,6 +273,16 @@ namespace Squidex.Domain.Apps.Entities.Backup
if (@event.Payload is AppCreated appCreated)
{
CurrentJob.AppId = appCreated.AppId.Id;
if (!string.IsNullOrWhiteSpace(CurrentJob.NewAppName))
{
appCreated.Name = CurrentJob.NewAppName;
}
}
if (@event.Payload is AppEvent appEvent && !string.IsNullOrWhiteSpace(CurrentJob.NewAppName))
{
appEvent.AppId = new NamedId<Guid>(appEvent.AppId.Id, CurrentJob.NewAppName);
}
foreach (var handler in handlers)

3
src/Squidex.Domain.Apps.Entities/Backup/State/RestoreStateJob.cs

@ -23,6 +23,9 @@ namespace Squidex.Domain.Apps.Entities.Backup.State
[JsonProperty]
public Uri Url { get; set; }
[JsonProperty]
public string NewAppName { get; set; }
[JsonProperty]
public Instant Started { get; set; }

3
src/Squidex/Areas/Api/Controllers/Backups/Models/RestoreRequest.cs

@ -17,5 +17,8 @@ namespace Squidex.Areas.Api.Controllers.Backups.Models
/// </summary>
[Required]
public Uri Url { get; set; }
[RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")]
public string Name { get; set; }
}
}

2
src/Squidex/Areas/Api/Controllers/Backups/RestoreController.cs

@ -63,7 +63,7 @@ namespace Squidex.Areas.Api.Controllers.Backups
{
var restoreGrain = grainFactory.GetGrain<IRestoreGrain>(User.OpenIdSubject());
await restoreGrain.RestoreAsync(request.Url);
await restoreGrain.RestoreAsync(request.Url, request.Name);
return NoContent();
}

Loading…
Cancel
Save