From cdd12cb6f6c1589f408ccd89ec79c77e051e55d3 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Wed, 17 Dec 2025 14:45:19 +0330 Subject: [PATCH] add Interface for Reference Dtos ... --- .../IXIdentityBaseReferencedProvider.cs | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 Interfaces/IXIdentityBaseReferencedProvider.cs diff --git a/Interfaces/IXIdentityBaseReferencedProvider.cs b/Interfaces/IXIdentityBaseReferencedProvider.cs new file mode 100644 index 0000000..09264c9 --- /dev/null +++ b/Interfaces/IXIdentityBaseReferencedProvider.cs @@ -0,0 +1,140 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using xDataService.Models; +using xIdentityModels.Models; +using xModels.Dtos; + +namespace xIdentityService.Interfaces +{ + /// + /// in Some Cases we have Entities Which Can Referenced for Specified + /// Provider and Types ... + /// this interface Globaly introduce all available Actions for those ... + /// + /// TKey: type of Provider Models Keys ... + /// TModel: type of Dto which Referenced ... + /// + public interface IXIdentityBaseReferencedProvider + { + // + #region Props ... + /// + /// Provider Identifier ... + /// + string Provider { get; } + #endregion + + // + #region Identifier ... + Task LastIndex(TKey providedForId); + #endregion + + // + #region Referenced Actions ... + /// + /// Get Specified Indexed Reference for Specific Provided ID ... + /// + /// + /// + /// + Task GetReference( + TKey providedForId, + int forIndex = 0 + ); + + /// + /// Retrieve all Exists References of Specific Provided ID ... + /// + /// + /// + Task> GetAllReferences(TKey providedForId); + + /// + /// Retrieve References of Specific Provided ID as Query ... + /// + /// + /// + Task> QueryReferences( + XQuery query, + TKey providedForId + ); + + /// + /// Add Reference a Model to Specific Provided ID ... + /// + /// + /// + /// + /// + /// + /// + Task AddReference( + TModel model, + TKey providedForId, + int forIndex = 0, + string connectionId = null, + XUserClaimsInfoDto userInfo = null + ); + + /// + /// Add Reference a Model to Specific XRefence ... + /// + /// + /// + /// + /// + /// + Task AddReference( + TModel model, + XReference reference, + string connectionId = null, + XUserClaimsInfoDto userInfo = null + ); + + /// + /// Remove Reference a Model for Specific Provided ID ... + /// + /// + /// + /// if null, removes all + /// + /// + /// + Task RemoveReference( + TModel model, + TKey providedForId, + int? forIndex = null, + string connectionId = null, + XUserClaimsInfoDto userInfo = null + ); + + /// + /// Remove Reference a Model for Specific XRefence ... + /// + /// + /// + /// + /// + /// + Task RemoveReference( + TModel model, + XReference reference, + string connectionId = null, + XUserClaimsInfoDto userInfo = null + ); + + /// + /// Remove All References to Specified Key ... + /// + /// + /// + /// + /// + Task RemoveReferences( + TKey providedForId, + string connectionId = null, + XUserClaimsInfoDto userInfo = null + ); + #endregion + } +} \ No newline at end of file