Files: optimization
This commit is contained in:
parent
610e31ec3b
commit
792f74e41a
@ -38,6 +38,7 @@ using ASC.Files.Core.Resources;
|
||||
using ASC.Web.Core;
|
||||
using ASC.Web.Core.Users;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Files.Utils;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
namespace ASC.Web.Files
|
||||
@ -130,27 +131,34 @@ namespace ASC.Web.Files
|
||||
{
|
||||
private Lazy<ASC.Files.Core.EF.FilesDbContext> LazyFilesDbContext { get; }
|
||||
private ASC.Files.Core.EF.FilesDbContext FilesDbContext { get => LazyFilesDbContext.Value; }
|
||||
private TenantManager TenantManager { get; }
|
||||
|
||||
private TenantManager TenantManager { get; }
|
||||
private GlobalFolder GlobalFolder { get; }
|
||||
public FileMarker FileMarker { get; }
|
||||
public IDaoFactory DaoFactory { get; }
|
||||
|
||||
public FilesUserSpaceUsage(
|
||||
DbContextManager<ASC.Files.Core.EF.FilesDbContext> dbContextManager,
|
||||
TenantManager tenantManager)
|
||||
TenantManager tenantManager,
|
||||
GlobalFolder globalFolder,
|
||||
FileMarker fileMarker,
|
||||
IDaoFactory daoFactory)
|
||||
{
|
||||
LazyFilesDbContext = new Lazy<ASC.Files.Core.EF.FilesDbContext>(() => dbContextManager.Get(FileConstant.DatabaseId));
|
||||
TenantManager = tenantManager;
|
||||
TenantManager = tenantManager;
|
||||
GlobalFolder = globalFolder;
|
||||
FileMarker = fileMarker;
|
||||
DaoFactory = daoFactory;
|
||||
}
|
||||
|
||||
public long GetUserSpaceUsage(Guid userId)
|
||||
{
|
||||
var tenantId = TenantManager.GetCurrentTenant().TenantId;
|
||||
var tenantId = TenantManager.GetCurrentTenant().TenantId;
|
||||
var my = GlobalFolder.GetFolderMy(FileMarker, DaoFactory);
|
||||
var trash = GlobalFolder.GetFolderTrash<int>(DaoFactory);
|
||||
|
||||
return FilesDbContext.Files
|
||||
.Join(FilesDbContext.Tree, a => a.FolderId, b => b.FolderId, (file, tree) => new { file, tree })
|
||||
.Join(FilesDbContext.BunchObjects, a => a.tree.ParentId.ToString(), b => b.LeftNode, (fileTree, bunch) => new { fileTree.file, fileTree.tree, bunch })
|
||||
.Where(r => r.file.TenantId == r.bunch.TenantId &&
|
||||
r.file.TenantId == tenantId &&
|
||||
r.file.CreateBy == userId &&
|
||||
(r.bunch.RightNode.StartsWith("files/trash/") | r.bunch.RightNode.StartsWith("files/my/")))
|
||||
.Sum(r => r.file.ContentLength);
|
||||
.Where(r => r.TenantId == tenantId && (r.FolderId == my || r.FolderId == trash))
|
||||
.Sum(r => r.ContentLength);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user