fix
This commit is contained in:
parent
07ad44edd7
commit
683b1ecd83
@ -120,6 +120,11 @@ public class AbstractDao
|
||||
|
||||
await filesDbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
protected ValueTask<object> MappingIDAsync(object id)
|
||||
{
|
||||
return MappingIDAsync(id, false);
|
||||
}
|
||||
|
||||
protected ValueTask<object> MappingIDAsync(object id, bool saveIfNotExist = false)
|
||||
{
|
||||
@ -138,6 +143,16 @@ public class AbstractDao
|
||||
return InternalMappingIDAsync(id, saveIfNotExist);
|
||||
}
|
||||
|
||||
protected int MappingIDAsync(int id)
|
||||
{
|
||||
return MappingIDAsync(id, false);
|
||||
}
|
||||
|
||||
protected int MappingIDAsync(int id, bool saveIfNotExist = false)
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
private async ValueTask<object> InternalMappingIDAsync(object id, bool saveIfNotExist = false)
|
||||
{
|
||||
object result;
|
||||
@ -178,11 +193,6 @@ public class AbstractDao
|
||||
return result;
|
||||
}
|
||||
|
||||
protected ValueTask<object> MappingIDAsync(object id)
|
||||
{
|
||||
return MappingIDAsync(id, false);
|
||||
}
|
||||
|
||||
internal static IQueryable<T> BuildSearch<T>(IQueryable<T> query, string text, SearhTypeEnum searhTypeEnum) where T : IDbSearch
|
||||
{
|
||||
var lowerText = GetSearchText(text);
|
||||
|
@ -73,15 +73,22 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
||||
|
||||
foreach (var record in records)
|
||||
{
|
||||
var query = await filesDbContext.Security
|
||||
List<DbFilesSecurity> toDelete = new();
|
||||
|
||||
var query = filesDbContext.Security
|
||||
.Where(r => r.TenantId == record.TenantId)
|
||||
.Where(r => r.EntryType == record.EntryType)
|
||||
.Where(r => r.Subject == record.Subject)
|
||||
.AsAsyncEnumerable()
|
||||
.WhereAwait(async r => r.EntryId == (await MappingIDAsync(record.EntryId)).ToString())
|
||||
.ToListAsync();
|
||||
.AsAsyncEnumerable();
|
||||
|
||||
filesDbContext.RemoveRange(query);
|
||||
await foreach (var r in query)
|
||||
{
|
||||
r.EntryId = (await MappingIDAsync(r.EntryId)).ToString();
|
||||
|
||||
toDelete.Add(r);
|
||||
}
|
||||
|
||||
filesDbContext.RemoveRange(toDelete);
|
||||
}
|
||||
|
||||
await tx.CommitAsync();
|
||||
@ -90,7 +97,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
||||
|
||||
public async Task<bool> IsSharedAsync(T entryId, FileEntryType type)
|
||||
{
|
||||
var mappedId = (await MappingIDAsync(entryId)).ToString();
|
||||
var mappedId = (entryId is int fid ? MappingIDAsync(fid) : await MappingIDAsync(entryId)).ToString();
|
||||
using var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||
|
||||
return await Query(filesDbContext.Security)
|
||||
@ -101,7 +108,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
||||
{
|
||||
if (r.Share == FileShare.None)
|
||||
{
|
||||
var entryId = (await MappingIDAsync(r.EntryId) ?? "").ToString();
|
||||
var entryId = (r.EntryId is int fid ? MappingIDAsync(fid) : (await MappingIDAsync(r.EntryId) ?? "")).ToString();
|
||||
if (string.IsNullOrEmpty(entryId))
|
||||
{
|
||||
return;
|
||||
@ -283,7 +290,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
||||
T folderId;
|
||||
if (entry.FileEntryType == FileEntryType.File)
|
||||
{
|
||||
var fileId = await MappingIDAsync(entry.Id);
|
||||
var fileId = entry.Id is int entryId ? MappingIDAsync(entryId) : await MappingIDAsync(entry.Id);
|
||||
folderId = ((File<T>)entry).ParentId;
|
||||
if (!files.Contains(fileId.ToString()))
|
||||
{
|
||||
@ -300,7 +307,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
||||
foldersInt.Add(folderIdInt);
|
||||
}
|
||||
|
||||
var mappedId = await MappingIDAsync(folderId);
|
||||
var mappedId = folderId is int fid ? MappingIDAsync(fid) : await MappingIDAsync(folderId);
|
||||
if (folders != null)
|
||||
{
|
||||
folders.Add(mappedId.ToString());
|
||||
|
@ -68,7 +68,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
foreach (var f in fileEntries)
|
||||
{
|
||||
var idObj = await MappingIDAsync(f.Id);
|
||||
var idObj = f.Id is int fid ? MappingIDAsync(fid) : await MappingIDAsync(f.Id);
|
||||
var id = idObj.ToString();
|
||||
if (f.FileEntryType == FileEntryType.File)
|
||||
{
|
||||
@ -116,7 +116,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
foreach (var f in fileEntries)
|
||||
{
|
||||
var idObj = await MappingIDAsync(f.Id);
|
||||
var idObj = f.Id is int fid ? MappingIDAsync(fid) : await MappingIDAsync(f.Id);
|
||||
var id = idObj.ToString();
|
||||
if (f.FileEntryType == FileEntryType.File)
|
||||
{
|
||||
@ -149,7 +149,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
await foreach (var f in fileEntries)
|
||||
{
|
||||
var idObj = await MappingIDAsync(f.Id);
|
||||
var idObj = f.Id is int fid ? MappingIDAsync(fid) : await MappingIDAsync(f.Id);
|
||||
var id = idObj.ToString();
|
||||
if (f.FileEntryType == FileEntryType.File)
|
||||
{
|
||||
@ -181,7 +181,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
public async IAsyncEnumerable<Tag> GetTagsAsync(T entryID, FileEntryType entryType, TagType tagType)
|
||||
{
|
||||
var mappedId = (await MappingIDAsync(entryID)).ToString();
|
||||
var mappedId = (entryID is int fid ? MappingIDAsync(fid) : await MappingIDAsync(entryID)).ToString();
|
||||
|
||||
var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||
var q = Query(filesDbContext.Tag)
|
||||
@ -598,7 +598,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
public async Task RemoveTagsAsync(FileEntry<T> entry, IEnumerable<int> tagsIds)
|
||||
{
|
||||
var entryId = (await MappingIDAsync(entry.Id)).ToString();
|
||||
var entryId = (entry.Id is int fid ? MappingIDAsync(fid) : await MappingIDAsync(entry.Id)).ToString();
|
||||
using var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||
|
||||
var toDelete = await Query(filesDbContext.TagLink)
|
||||
@ -657,7 +657,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
if (id != 0)
|
||||
{
|
||||
var entryId = (await MappingIDAsync(tag.EntryId)).ToString();
|
||||
var entryId = (tag.EntryId is int fid ? MappingIDAsync(fid) : await MappingIDAsync(tag.EntryId)).ToString();
|
||||
var toDelete = await Query(filesDbContext.TagLink)
|
||||
.Where(r => r.TagId == id &&
|
||||
r.EntryId == entryId &&
|
||||
@ -902,7 +902,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
||||
|
||||
foreach (var r in fileEntries)
|
||||
{
|
||||
var idObj = await MappingIDAsync(r.Id);
|
||||
var idObj = r.Id is int fid ? MappingIDAsync(fid) : await MappingIDAsync(r.Id);
|
||||
var id = idObj.ToString();
|
||||
var entryType = (r.FileEntryType == FileEntryType.File) ? FileEntryType.File : FileEntryType.Folder;
|
||||
|
||||
|
@ -54,7 +54,7 @@ public class CustomTagsService
|
||||
|
||||
private IDictionary<string, StringValues> Headers => _httpContextAccessor?.HttpContext?.Request?.Headers;
|
||||
|
||||
public async Task<object> CreateTagAsync<T>(string name)
|
||||
public async Task<string> CreateTagAsync(string name)
|
||||
{
|
||||
if (_userManager.IsUser(_authContext.CurrentAccount.ID))
|
||||
{
|
||||
@ -63,7 +63,7 @@ public class CustomTagsService
|
||||
|
||||
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(name);
|
||||
|
||||
var tagDao = _daoFactory.GetTagDao<T>();
|
||||
var tagDao = _daoFactory.GetTagDao<int>();
|
||||
var tags = await tagDao.GetTagsInfoAsync(name, TagType.Custom, true).ToListAsync();
|
||||
|
||||
if (tags.Any())
|
||||
|
@ -681,7 +681,7 @@ public class VirtualRoomsCommonController : ApiControllerBase
|
||||
var filterValue = _apiContext.FilterValue;
|
||||
|
||||
var content = await _fileStorageService.GetFolderItemsAsync(parentId, startIndex, count, filter, false, subjectId, filterValue,
|
||||
searchInContent ?? false, withSubfolders ?? false, orderBy, searchArea ?? SearchArea.Active, withoutTags ?? false, tagNames, excludeSubject ?? false,
|
||||
searchInContent ?? false, withSubfolders ?? false, orderBy, searchArea ?? SearchArea.Active, withoutTags ?? false, tagNames, excludeSubject ?? false,
|
||||
provider ?? ProviderFilter.None, subjectFilter ?? SubjectFilter.Owner);
|
||||
|
||||
var dto = await _folderContentDtoHelper.GetAsync(content, startIndex);
|
||||
@ -702,11 +702,11 @@ public class VirtualRoomsCommonController : ApiControllerBase
|
||||
/// Tag name
|
||||
/// </returns>
|
||||
[HttpPost("tags")]
|
||||
public async Task<object> CreateTagAsync(CreateTagRequestDto inDto)
|
||||
public async Task<string> CreateTagAsync(CreateTagRequestDto inDto)
|
||||
{
|
||||
ErrorIfNotDocSpace();
|
||||
|
||||
return await _customTagsService.CreateTagAsync<int>(inDto.Name);
|
||||
return await _customTagsService.CreateTagAsync(inDto.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user