Backup: added DeleteBackupRequest

This commit is contained in:
pavelbannov 2020-06-16 17:46:10 +03:00
parent fc0826b60d
commit b35a60cac0
4 changed files with 38 additions and 4 deletions

View File

@ -30,6 +30,7 @@
<ItemGroup>
<None Remove="protos\AzRecordCache.proto" />
<None Remove="protos\ConsumerCacheItem.proto" />
<None Remove="protos\DeleteBackupRequest.proto" />
<None Remove="protos\GroupCacheItem.proto" />
<None Remove="protos\NotifyMessage.proto" />
<None Remove="protos\QuotaCacheItem.proto" />
@ -69,6 +70,7 @@
<Protobuf Include="protos\NotifyMessage.proto" />
<Protobuf Include="protos\SettingsCacheItem.proto" />
<Protobuf Include="protos\ConsumerCacheItem.proto" />
<Protobuf Include="protos\DeleteBackupRequest.proto" />
<Protobuf Include="protos\TenantCacheItem.proto" />
<Protobuf Include="protos\GroupCacheItem.proto" />
<Protobuf Include="protos\UserGroupRefCacheItem.proto" />

View File

@ -29,11 +29,14 @@ using System.Collections.Generic;
using ASC.Common;
using ASC.Common.Caching;
using Google.Protobuf;
namespace ASC.Core.Common.Contracts
{
public class BackupServiceClient : IBackupService
{
{
public ICacheNotify<DeleteBackupRequest> CacheDeleteBackupRequest { get; }
public ICacheNotify<StartBackupRequest> СacheStartBackupRequest { get; set; }
public ICacheNotify<StartRestoreRequest> СacheStartRestoreRequest { get; set; }
public ICacheNotify<StartTransferRequest> СacheStartTransferRequest { get; set; }
@ -41,12 +44,14 @@ namespace ASC.Core.Common.Contracts
public ICache Cache { get; }
public BackupServiceClient(
ICacheNotify<DeleteBackupRequest> cacheDeleteBackupRequest,
ICacheNotify<StartBackupRequest> cacheStartBackupRequest,
ICacheNotify<StartRestoreRequest> cacheStartRestoreRequest,
ICacheNotify<StartTransferRequest> cacheStartTransferRequest,
ICacheNotify<BackupProgress> сacheBackupProgress
)
{
CacheDeleteBackupRequest = cacheDeleteBackupRequest;
СacheStartBackupRequest = cacheStartBackupRequest;
СacheStartRestoreRequest = cacheStartRestoreRequest;
СacheStartTransferRequest = cacheStartTransferRequest;
@ -72,13 +77,13 @@ namespace ASC.Core.Common.Contracts
public void DeleteBackup(Guid backupId)
{
// Channel.DeleteBackup(backupId);
CacheDeleteBackupRequest.Publish(new DeleteBackupRequest() { Id = ByteString.CopyFrom(backupId.ToByteArray()), TenantId = -1 }, CacheNotifyAction.InsertOrUpdate);
}
public void DeleteAllBackups(int tenantId)
{
// Channel.DeleteAllBackups(tenantId);
CacheDeleteBackupRequest.Publish(new DeleteBackupRequest() { Id = ByteString.CopyFrom(Guid.Empty.ToByteArray()), TenantId = tenantId }, CacheNotifyAction.InsertOrUpdate);
}
public List<BackupHistoryRecord> GetBackupHistory(int tenantId)

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package ASC.Core.Common.Contracts;
message DeleteBackupRequest {
int32 TenantId = 1;
bytes Id = 2;
}

View File

@ -52,17 +52,20 @@ namespace ASC.Data.Backup.Service
internal class BackupServiceNotifier
{
private IServiceProvider ServiceProvider { get; }
private ICacheNotify<DeleteBackupRequest> СacheDeleteBackupRequest { get; set; }
private ICacheNotify<StartBackupRequest> СacheStartBackupRequest { get; set; }
private ICacheNotify<StartRestoreRequest> СacheStartRestoreRequest { get; set; }
private ICacheNotify<StartTransferRequest> СacheStartTransferRequest { get; set; }
public BackupServiceNotifier(
IServiceProvider serviceProvider,
ICacheNotify<DeleteBackupRequest> cacheDeleteBackupRequest,
ICacheNotify<StartBackupRequest> cacheStartBackupRequest,
ICacheNotify<StartRestoreRequest> cacheStartRestoreRequest,
ICacheNotify<StartTransferRequest> cacheStartTransferRequest)
{
ServiceProvider = serviceProvider;
СacheDeleteBackupRequest = cacheDeleteBackupRequest;
СacheStartBackupRequest = cacheStartBackupRequest;
СacheStartRestoreRequest = cacheStartRestoreRequest;
СacheStartTransferRequest = cacheStartTransferRequest;
@ -70,6 +73,22 @@ namespace ASC.Data.Backup.Service
public void Subscribe()
{
СacheDeleteBackupRequest.Subscribe((n) =>
{
using var scope = ServiceProvider.CreateScope();
var backupService = scope.ServiceProvider.GetService<BackupService>();
var id = new Guid(n.Id.ToByteArray());
if (!id.Equals(Guid.Empty))
{
backupService.DeleteBackup(id);
}
else if (n.TenantId != -1)
{
backupService.DeleteAllBackups(n.TenantId);
}
}
, CacheNotifyAction.InsertOrUpdate);
СacheStartBackupRequest.Subscribe((n) =>
{
using var scope = ServiceProvider.CreateScope();