Refactor Providing Mechanism ...

This commit is contained in:
2025-12-17 14:44:55 +03:30
parent 0b033ab1b9
commit 228e2e4eca
6 changed files with 635 additions and 498 deletions
File diff suppressed because it is too large Load Diff
+39 -28
View File
@@ -25,6 +25,7 @@ using Microsoft.Extensions.FileProviders;
using Microsoft.AspNetCore.StaticFiles;
using System.Linq;
using xPushService.Constants;
using xDataService.Models;
namespace xFileService.Providers
{
@@ -251,10 +252,10 @@ namespace xFileService.Providers
try
{
//
await TagProvider.Attach(
tag,
id,
connectionId
await TagProvider.AddReference(
tag: tag,
providedForId: id,
connectionId: connectionId
);
}
catch { }
@@ -298,10 +299,10 @@ namespace xFileService.Providers
try
{
//
await TagProvider.Detach(
tag,
id,
connectionId
await TagProvider.RemoveReference(
tag: tag,
providedForId: id,
connectionId: connectionId
);
}
catch { }
@@ -447,7 +448,10 @@ namespace xFileService.Providers
try
{
//
var tags = await TagProvider.RemoveTagsFor(id);
await TagProvider.RemoveReferences(
providedForId: id,
connectionId: connectionId
);
}
catch { }
}
@@ -464,7 +468,7 @@ namespace xFileService.Providers
// Validate ...
var isValid = !id.IsNull() &&
!id.IsDefaultGuid();
if (!isValid)
if (!isValid)
{
XException.InvalidArgs.Throw();
}
@@ -478,7 +482,7 @@ namespace xFileService.Providers
}
//
var tags = await TagProvider.GetTags(id);
var tags = await TagProvider.GetAllReferences(id);
//
var result = new List<string>();
@@ -492,7 +496,7 @@ namespace xFileService.Providers
//
return result;
}
}
#endregion
//
@@ -847,8 +851,8 @@ namespace xFileService.Providers
// Here we send Null Connection ID for Preventing Update Push ...
// since we Remove Entity ...
await DetachTags(
id: id,
userInfo: userInfo,
id: id,
userInfo: userInfo,
connectionId: null
);
}
@@ -1076,14 +1080,11 @@ namespace xFileService.Providers
}
//
var identifier = GetIdentifier(
providedFor: providedFor,
forProvidedId: forProvidedId
);
var result =
dto.References.IsNull() &&
dto.References.HasChild() &&
dto.References.Any(r => r.ToNormalString() == identifier.ToNormalString());
dto.References.Any(r => r.ProvidedFor == providedFor &&
r.ReferencedTo == $"{forProvidedId}");
//
return result;
@@ -1095,6 +1096,7 @@ namespace xFileService.Providers
/// <param name="providedFor"></param>
/// <param name="forProvidedId"></param>
/// <param name="id"></param>
/// <param name="forIndex"></param>
/// <param name="userInfo"></param>
/// <param name="connectionId"></param>
/// <returns></returns>
@@ -1102,6 +1104,7 @@ namespace xFileService.Providers
string providedFor,
TKey forProvidedId,
Guid id,
int forIndex = 0,
XUserClaimsInfoDto userInfo = null,
string connectionId = null
)
@@ -1148,16 +1151,18 @@ namespace xFileService.Providers
}
//
var identifier = GetIdentifier(
providedFor: providedFor,
forProvidedId: forProvidedId
);
dto.References.Add(identifier);
var reference = new XReference<string>
{
Index = forIndex,
ProvidedFor = providedFor,
ReferencedTo = $"{forProvidedId}"
};
dto.References.Add(reference);
//
dto = await Update(
id: dto.Id,
item: dto,
id: dto.Id,
userInfo: userInfo,
connectionId: connectionId
);
@@ -1175,6 +1180,7 @@ namespace xFileService.Providers
/// <param name="providedFor"></param>
/// <param name="forProvidedId"></param>
/// <param name="id"></param>
/// <param name="forIndex"></param>
/// <param name="userInfo"></param>
/// <param name="connectionId"></param>
/// <returns></returns>
@@ -1182,6 +1188,7 @@ namespace xFileService.Providers
string providedFor,
TKey forProvidedId,
Guid id,
int forIndex = 0,
XUserClaimsInfoDto userInfo = null,
string connectionId = null
)
@@ -1234,11 +1241,15 @@ namespace xFileService.Providers
forProvidedId: forProvidedId
);
dto.References = dto.References
.Where(r => r.ToNormalString() != identifier.ToNormalString())
.Where(r =>
r.Index != forIndex &&
r.ProvidedFor != providedFor &&
r.ReferencedTo != $"{forProvidedId}"
)
.ToList();
dto = await Update(
id: dto.Id,
item: dto,
id: dto.Id,
userInfo: userInfo,
connectionId: connectionId
);
@@ -1642,7 +1653,7 @@ namespace xFileService.Providers
//
// Removing Tags ...
await TagProvider.RemoveTagsFor(result.Id);
await TagProvider.RemoveReferences(result.Id);
//
await SendPush(