fix
This commit is contained in:
parent
07ad44edd7
commit
683b1ecd83
@ -121,6 +121,11 @@ public class AbstractDao
|
|||||||
await filesDbContext.SaveChangesAsync();
|
await filesDbContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ValueTask<object> MappingIDAsync(object id)
|
||||||
|
{
|
||||||
|
return MappingIDAsync(id, false);
|
||||||
|
}
|
||||||
|
|
||||||
protected ValueTask<object> MappingIDAsync(object id, bool saveIfNotExist = false)
|
protected ValueTask<object> MappingIDAsync(object id, bool saveIfNotExist = false)
|
||||||
{
|
{
|
||||||
if (id == null)
|
if (id == null)
|
||||||
@ -138,6 +143,16 @@ public class AbstractDao
|
|||||||
return InternalMappingIDAsync(id, saveIfNotExist);
|
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)
|
private async ValueTask<object> InternalMappingIDAsync(object id, bool saveIfNotExist = false)
|
||||||
{
|
{
|
||||||
object result;
|
object result;
|
||||||
@ -178,11 +193,6 @@ public class AbstractDao
|
|||||||
return result;
|
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
|
internal static IQueryable<T> BuildSearch<T>(IQueryable<T> query, string text, SearhTypeEnum searhTypeEnum) where T : IDbSearch
|
||||||
{
|
{
|
||||||
var lowerText = GetSearchText(text);
|
var lowerText = GetSearchText(text);
|
||||||
|
@ -73,15 +73,22 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
|||||||
|
|
||||||
foreach (var record in records)
|
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.TenantId == record.TenantId)
|
||||||
.Where(r => r.EntryType == record.EntryType)
|
.Where(r => r.EntryType == record.EntryType)
|
||||||
.Where(r => r.Subject == record.Subject)
|
.Where(r => r.Subject == record.Subject)
|
||||||
.AsAsyncEnumerable()
|
.AsAsyncEnumerable();
|
||||||
.WhereAwait(async r => r.EntryId == (await MappingIDAsync(record.EntryId)).ToString())
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
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();
|
await tx.CommitAsync();
|
||||||
@ -90,7 +97,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
|||||||
|
|
||||||
public async Task<bool> IsSharedAsync(T entryId, FileEntryType type)
|
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();
|
using var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||||
|
|
||||||
return await Query(filesDbContext.Security)
|
return await Query(filesDbContext.Security)
|
||||||
@ -101,7 +108,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
|||||||
{
|
{
|
||||||
if (r.Share == FileShare.None)
|
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))
|
if (string.IsNullOrEmpty(entryId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -283,7 +290,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
|||||||
T folderId;
|
T folderId;
|
||||||
if (entry.FileEntryType == FileEntryType.File)
|
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;
|
folderId = ((File<T>)entry).ParentId;
|
||||||
if (!files.Contains(fileId.ToString()))
|
if (!files.Contains(fileId.ToString()))
|
||||||
{
|
{
|
||||||
@ -300,7 +307,7 @@ internal class SecurityDao<T> : AbstractDao, ISecurityDao<T>
|
|||||||
foldersInt.Add(folderIdInt);
|
foldersInt.Add(folderIdInt);
|
||||||
}
|
}
|
||||||
|
|
||||||
var mappedId = await MappingIDAsync(folderId);
|
var mappedId = folderId is int fid ? MappingIDAsync(fid) : await MappingIDAsync(folderId);
|
||||||
if (folders != null)
|
if (folders != null)
|
||||||
{
|
{
|
||||||
folders.Add(mappedId.ToString());
|
folders.Add(mappedId.ToString());
|
||||||
|
@ -68,7 +68,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
|||||||
|
|
||||||
foreach (var f in fileEntries)
|
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();
|
var id = idObj.ToString();
|
||||||
if (f.FileEntryType == FileEntryType.File)
|
if (f.FileEntryType == FileEntryType.File)
|
||||||
{
|
{
|
||||||
@ -116,7 +116,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
|||||||
|
|
||||||
foreach (var f in fileEntries)
|
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();
|
var id = idObj.ToString();
|
||||||
if (f.FileEntryType == FileEntryType.File)
|
if (f.FileEntryType == FileEntryType.File)
|
||||||
{
|
{
|
||||||
@ -149,7 +149,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
|||||||
|
|
||||||
await foreach (var f in fileEntries)
|
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();
|
var id = idObj.ToString();
|
||||||
if (f.FileEntryType == FileEntryType.File)
|
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)
|
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 filesDbContext = _dbContextFactory.CreateDbContext();
|
||||||
var q = Query(filesDbContext.Tag)
|
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)
|
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();
|
using var filesDbContext = _dbContextFactory.CreateDbContext();
|
||||||
|
|
||||||
var toDelete = await Query(filesDbContext.TagLink)
|
var toDelete = await Query(filesDbContext.TagLink)
|
||||||
@ -657,7 +657,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
|||||||
|
|
||||||
if (id != 0)
|
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)
|
var toDelete = await Query(filesDbContext.TagLink)
|
||||||
.Where(r => r.TagId == id &&
|
.Where(r => r.TagId == id &&
|
||||||
r.EntryId == entryId &&
|
r.EntryId == entryId &&
|
||||||
@ -902,7 +902,7 @@ internal abstract class BaseTagDao<T> : AbstractDao
|
|||||||
|
|
||||||
foreach (var r in fileEntries)
|
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 id = idObj.ToString();
|
||||||
var entryType = (r.FileEntryType == FileEntryType.File) ? FileEntryType.File : FileEntryType.Folder;
|
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;
|
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))
|
if (_userManager.IsUser(_authContext.CurrentAccount.ID))
|
||||||
{
|
{
|
||||||
@ -63,7 +63,7 @@ public class CustomTagsService
|
|||||||
|
|
||||||
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(name);
|
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(name);
|
||||||
|
|
||||||
var tagDao = _daoFactory.GetTagDao<T>();
|
var tagDao = _daoFactory.GetTagDao<int>();
|
||||||
var tags = await tagDao.GetTagsInfoAsync(name, TagType.Custom, true).ToListAsync();
|
var tags = await tagDao.GetTagsInfoAsync(name, TagType.Custom, true).ToListAsync();
|
||||||
|
|
||||||
if (tags.Any())
|
if (tags.Any())
|
||||||
|
@ -702,11 +702,11 @@ public class VirtualRoomsCommonController : ApiControllerBase
|
|||||||
/// Tag name
|
/// Tag name
|
||||||
/// </returns>
|
/// </returns>
|
||||||
[HttpPost("tags")]
|
[HttpPost("tags")]
|
||||||
public async Task<object> CreateTagAsync(CreateTagRequestDto inDto)
|
public async Task<string> CreateTagAsync(CreateTagRequestDto inDto)
|
||||||
{
|
{
|
||||||
ErrorIfNotDocSpace();
|
ErrorIfNotDocSpace();
|
||||||
|
|
||||||
return await _customTagsService.CreateTagAsync<int>(inDto.Name);
|
return await _customTagsService.CreateTagAsync(inDto.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user