executedelete in DeleteFileAsync
This commit is contained in:
parent
ad35952807
commit
62422999fb
@ -381,25 +381,10 @@ internal abstract class ThirdPartyFileDao<TFile, TFolder, TItem> : IFileDao<stri
|
||||
await using var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||
await using (var tx = await filesDbContext.Database.BeginTransactionAsync())
|
||||
{
|
||||
var link = await Queries.TagLinksAsync(filesDbContext, _tenantId, id).ToListAsync();
|
||||
|
||||
filesDbContext.TagLink.RemoveRange(link);
|
||||
await filesDbContext.SaveChangesAsync();
|
||||
|
||||
var tagsToRemove = await Queries.TagsAsync(filesDbContext).ToListAsync();
|
||||
|
||||
filesDbContext.Tag.RemoveRange(tagsToRemove);
|
||||
|
||||
var securityToDelete = await Queries.FilesSecuritiesAsync(filesDbContext, _tenantId, id).ToListAsync();
|
||||
|
||||
|
||||
filesDbContext.Security.RemoveRange(securityToDelete);
|
||||
await filesDbContext.SaveChangesAsync();
|
||||
|
||||
var mappingToDelete = await Queries.ThirdpartyIdMappingsAsync(filesDbContext, _tenantId, id).ToListAsync();
|
||||
|
||||
filesDbContext.ThirdpartyIdMapping.RemoveRange(mappingToDelete);
|
||||
await filesDbContext.SaveChangesAsync();
|
||||
await Queries.DeleteTagLinksAsync(filesDbContext, _tenantId, id);
|
||||
await Queries.DeleteTagsAsync(filesDbContext);
|
||||
await Queries.DeleteFilesSecuritiesAsync(filesDbContext, _tenantId, id);
|
||||
await Queries.DeleteThirdpartyIdMappingsAsync(filesDbContext, _tenantId, id);
|
||||
|
||||
await tx.CommitAsync();
|
||||
}
|
||||
@ -690,19 +675,20 @@ internal abstract class ThirdPartyFileDao<TFile, TFolder, TItem> : IFileDao<stri
|
||||
|
||||
static file class Queries
|
||||
{
|
||||
public static readonly Func<FilesDbContext, IAsyncEnumerable<DbFilesTag>> TagsAsync =
|
||||
public static readonly Func<FilesDbContext, Task<int>> DeleteTagsAsync =
|
||||
Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
|
||||
(FilesDbContext ctx) =>
|
||||
from ft in ctx.Tag
|
||||
join ftl in ctx.TagLink.DefaultIfEmpty() on new { TenantId = ft.TenantId, Id = ft.Id } equals new
|
||||
{
|
||||
TenantId = ftl.TenantId,
|
||||
Id = ftl.TagId
|
||||
}
|
||||
where ftl == null
|
||||
select ft);
|
||||
(from ft in ctx.Tag
|
||||
join ftl in ctx.TagLink.DefaultIfEmpty() on new { TenantId = ft.TenantId, Id = ft.Id } equals new
|
||||
{
|
||||
TenantId = ftl.TenantId,
|
||||
Id = ftl.TagId
|
||||
}
|
||||
where ftl == null
|
||||
select ft)
|
||||
.ExecuteDelete());
|
||||
|
||||
public static readonly Func<FilesDbContext, int, string, IAsyncEnumerable<DbFilesTagLink>> TagLinksAsync =
|
||||
public static readonly Func<FilesDbContext, int, string, Task<int>> DeleteTagLinksAsync =
|
||||
Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
|
||||
(FilesDbContext ctx, int tenantId, string idStart) =>
|
||||
ctx.TagLink
|
||||
@ -710,9 +696,10 @@ static file class Queries
|
||||
.Where(r => ctx.ThirdpartyIdMapping
|
||||
.Where(t => t.TenantId == tenantId)
|
||||
.Where(t => t.Id.StartsWith(idStart))
|
||||
.Select(t => t.HashId).Any(h => h == r.EntryId)));
|
||||
.Select(t => t.HashId).Any(h => h == r.EntryId))
|
||||
.ExecuteDelete());
|
||||
|
||||
public static readonly Func<FilesDbContext, int, string, IAsyncEnumerable<DbFilesSecurity>> FilesSecuritiesAsync =
|
||||
public static readonly Func<FilesDbContext, int, string, Task<int>> DeleteFilesSecuritiesAsync =
|
||||
Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
|
||||
(FilesDbContext ctx, int tenantId, string idStart) =>
|
||||
ctx.Security
|
||||
@ -720,13 +707,15 @@ static file class Queries
|
||||
.Where(r => ctx.ThirdpartyIdMapping
|
||||
.Where(t => t.TenantId == tenantId)
|
||||
.Where(t => t.Id.StartsWith(idStart))
|
||||
.Select(t => t.HashId).Any(h => h == r.EntryId)));
|
||||
.Select(t => t.HashId).Any(h => h == r.EntryId))
|
||||
.ExecuteDelete());
|
||||
|
||||
public static readonly Func<FilesDbContext, int, string, IAsyncEnumerable<DbFilesThirdpartyIdMapping>>
|
||||
ThirdpartyIdMappingsAsync =
|
||||
public static readonly Func<FilesDbContext, int, string, Task<int>>
|
||||
DeleteThirdpartyIdMappingsAsync =
|
||||
Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
|
||||
(FilesDbContext ctx, int tenantId, string idStart) =>
|
||||
ctx.ThirdpartyIdMapping
|
||||
.Where(r => r.TenantId == tenantId)
|
||||
.Where(t => t.Id.StartsWith(idStart)));
|
||||
.Where(t => t.Id.StartsWith(idStart))
|
||||
.ExecuteDelete());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user