Files: bugfix and optimization
This commit is contained in:
parent
4a1023808c
commit
ed22ffb326
@ -61,7 +61,6 @@
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference> -->
|
||||
<PackageReference Include="MySql.Data" Version="8.0.21" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="NLog" Version="4.7.5" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
|
||||
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||
|
@ -123,13 +123,18 @@ namespace ASC.Files.Core.Data
|
||||
public File<int> GetFile(int fileId)
|
||||
{
|
||||
var query = GetFileQuery(r => r.Id == fileId && r.CurrentVersion).AsNoTracking();
|
||||
return ToFile(FromQueryWithShared(query).SingleOrDefault());
|
||||
return ToFile(
|
||||
FromQueryWithShared(query)
|
||||
.Take(1)
|
||||
.SingleOrDefault());
|
||||
}
|
||||
|
||||
public File<int> GetFile(int fileId, int fileVersion)
|
||||
{
|
||||
var query = GetFileQuery(r => r.Id == fileId && r.Version == fileVersion).AsNoTracking();
|
||||
return ToFile(FromQueryWithShared(query).SingleOrDefault());
|
||||
return ToFile(FromQueryWithShared(query)
|
||||
.Take(1)
|
||||
.SingleOrDefault());
|
||||
}
|
||||
|
||||
public File<int> GetFile(int parentId, string title)
|
||||
@ -1328,9 +1333,11 @@ namespace ASC.Files.Core.Data
|
||||
.Where(x => x.tree.FolderId == r.FolderId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault(),
|
||||
Shared =
|
||||
FilesDbContext.Security
|
||||
.Where(x=> x.TenantId == TenantID)
|
||||
.Where(x => x.EntryType == FileEntryType.File)
|
||||
.Where(x => x.EntryId == r.Id.ToString())
|
||||
.Any()
|
||||
@ -1349,6 +1356,7 @@ namespace ASC.Files.Core.Data
|
||||
.Where(x => x.tree.FolderId == r.FolderId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault(),
|
||||
Shared = true
|
||||
});
|
||||
|
@ -353,13 +353,13 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
//full path to root
|
||||
var oldTree = FilesDbContext.Tree
|
||||
.Where(r => r.FolderId == (int)folder.ParentFolderID);
|
||||
.Where(r => r.FolderId == folder.ParentFolderID);
|
||||
|
||||
foreach (var o in oldTree)
|
||||
{
|
||||
var treeToAdd = new DbFolderTree
|
||||
{
|
||||
FolderId = (int)folder.ID,
|
||||
FolderId = folder.ID,
|
||||
ParentId = o.ParentId,
|
||||
Level = o.Level + 1
|
||||
};
|
||||
@ -1049,7 +1049,8 @@ namespace ASC.Files.Core.Data
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault(),
|
||||
Shared = FilesDbContext.Security
|
||||
Shared = FilesDbContext.Security
|
||||
.Where(x => x.TenantId == TenantID)
|
||||
.Where(r => r.EntryType == FileEntryType.Folder)
|
||||
.Where(x => x.EntryId == r.Id.ToString())
|
||||
.Any()
|
||||
|
@ -28,7 +28,8 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
@ -457,15 +458,15 @@ namespace ASC.Files.Core.Data
|
||||
var shareQuery =
|
||||
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
||||
r => FilesDbContext.Security
|
||||
.Where(a => a.TenantId == r.Link.TenantId)
|
||||
.Where(a => a.TenantId == TenantID)
|
||||
.Where(a => a.EntryId == r.Link.EntryId)
|
||||
.Where(a => a.EntryType == r.Link.EntryType)
|
||||
.Any()));
|
||||
|
||||
var tmpShareFileTags =
|
||||
shareQuery()
|
||||
.Join(FilesDbContext.Files, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, file) => new { tagLink, file })
|
||||
.Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
|
||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
||||
.Where(r => r.file.TenantId == TenantID)
|
||||
.Where(r => r.file.CreateBy != subject)
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
||||
.Select(r => new
|
||||
@ -473,10 +474,11 @@ namespace ASC.Files.Core.Data
|
||||
r.tagLink,
|
||||
root = FilesDbContext.Folders
|
||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||
.Where(x => x.folder.TenantId == r.file.TenantId)
|
||||
.Where(x => x.folder.TenantId == TenantID)
|
||||
.Where(x => x.tree.FolderId == r.file.FolderId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault()
|
||||
})
|
||||
.Where(r => r.root.FolderType == FolderType.USER)
|
||||
@ -487,8 +489,8 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
var tmpShareFolderTags =
|
||||
shareQuery()
|
||||
.Join(FilesDbContext.Folders, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, folder) => new { tagLink, folder })
|
||||
.Where(r => r.folder.TenantId == r.tagLink.Link.TenantId)
|
||||
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
||||
.Where(r => r.folder.TenantId == TenantID)
|
||||
.Where(r => r.folder.CreateBy != subject)
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||
.Select(r => new
|
||||
@ -496,10 +498,11 @@ namespace ASC.Files.Core.Data
|
||||
r.tagLink,
|
||||
root = FilesDbContext.Folders
|
||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||
.Where(x => x.folder.TenantId == r.folder.TenantId)
|
||||
.Where(x => x.folder.TenantId ==TenantID)
|
||||
.Where(x => x.tree.FolderId == r.folder.ParentId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault()
|
||||
})
|
||||
.Where(r => r.root.FolderType == FolderType.USER)
|
||||
@ -531,15 +534,15 @@ namespace ASC.Files.Core.Data
|
||||
var shareQuery =
|
||||
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
||||
r => FilesDbContext.Security
|
||||
.Where(a => a.TenantId == r.Link.TenantId)
|
||||
.Where(a => a.TenantId == TenantID)
|
||||
.Where(a => a.EntryId == r.Link.EntryId)
|
||||
.Where(a => a.EntryType == r.Link.EntryType)
|
||||
.Any()));
|
||||
|
||||
var tmpShareFileTags =
|
||||
shareQuery()
|
||||
.Join(FilesDbContext.Files, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, file) => new { tagLink, file })
|
||||
.Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
|
||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
||||
.Where(r => r.file.TenantId == TenantID)
|
||||
.Where(r => r.file.CreateBy != subject)
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
||||
.Select(r => new
|
||||
@ -547,10 +550,11 @@ namespace ASC.Files.Core.Data
|
||||
r.tagLink,
|
||||
root = FilesDbContext.Folders
|
||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||
.Where(x => x.folder.TenantId == r.file.TenantId)
|
||||
.Where(x => x.folder.TenantId == TenantID)
|
||||
.Where(x => x.tree.FolderId == r.file.FolderId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault()
|
||||
})
|
||||
.Where(r => r.root.FolderType == FolderType.Privacy)
|
||||
@ -561,8 +565,8 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
var tmpShareFolderTags =
|
||||
shareQuery()
|
||||
.Join(FilesDbContext.Folders, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, folder) => new { tagLink, folder })
|
||||
.Where(r => r.folder.TenantId == r.tagLink.Link.TenantId)
|
||||
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
||||
.Where(r => r.folder.TenantId == TenantID)
|
||||
.Where(r => r.folder.CreateBy != subject)
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||
.Select(r => new
|
||||
@ -570,10 +574,11 @@ namespace ASC.Files.Core.Data
|
||||
r.tagLink,
|
||||
root = FilesDbContext.Folders
|
||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||
.Where(x => x.folder.TenantId == r.folder.TenantId)
|
||||
.Where(x => x.folder.TenantId == TenantID)
|
||||
.Where(x => x.tree.FolderId == r.folder.ParentId)
|
||||
.OrderByDescending(r => r.tree.Level)
|
||||
.Select(r => r.folder)
|
||||
.Take(1)
|
||||
.FirstOrDefault()
|
||||
})
|
||||
.Where(r => r.root.FolderType == FolderType.Privacy)
|
||||
@ -626,7 +631,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
var newTagsForFiles =
|
||||
getBaseSqlQuery()
|
||||
.Join(FilesDbContext.Files, r => r.Link.EntryId, r => r.Id.ToString(), (tagLink, file) => new { tagLink, file })
|
||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, r => r.Id, (tagLink, file) => new { tagLink, file })
|
||||
.Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
|
||||
.Where(r => where.Any(a => r.file.FolderId.ToString() == a))
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
||||
@ -657,7 +662,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
var newTagsForSBox = getBaseSqlQuery()
|
||||
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
|
||||
.Where(r => r.mapping.TenantId == r.tagLink.Link.TenantId)
|
||||
.Where(r => r.mapping.TenantId == TenantID)
|
||||
.Where(r => thirdpartyFolderIds.Any(a => r.mapping.Id == a))
|
||||
.Where(r => r.tagLink.Tag.Owner == subject)
|
||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||
@ -672,7 +677,7 @@ namespace ASC.Files.Core.Data
|
||||
protected List<Tag> FromQuery(IQueryable<TagLinkData> dbFilesTags)
|
||||
{
|
||||
return dbFilesTags
|
||||
//.ToList()
|
||||
.ToList()
|
||||
.Select(ToTag)
|
||||
.ToList();
|
||||
}
|
||||
|
@ -24,10 +24,10 @@ namespace ASC.Files.Core.EF
|
||||
public string EntryId { get; set; }
|
||||
|
||||
[Column("create_by")]
|
||||
public Guid CreateBy { get; set; }
|
||||
public Guid? CreateBy { get; set; }
|
||||
|
||||
[Column("create_on")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
public DateTime? CreateOn { get; set; }
|
||||
|
||||
[Column("tag_count")]
|
||||
public int TagCount { get; set; }
|
||||
|
Loading…
Reference in New Issue
Block a user