using System; using System.Linq; using xModels.Dtos; using System.Threading; using xIdentityModels.Dtos; using System.Threading.Tasks; using xIdentityModels.Models; using System.Linq.Expressions; using System.Collections.Generic; using Microsoft.EntityFrameworkCore.Query; namespace xIds.Interfaces { /// /// a Service For Manage Security Applications and also Api Key(s) ... /// public interface IXApplicationProvider { // #region Application ... /// /// Add Specified Item ... /// /// /// /// /// Task AddApplicationAsync( XApplicationDto item, XUserClaimsInfoDto userInfo, CancellationToken cancellationToken = default ); /// /// Update Specified Item ... /// /// /// /// /// /// Task UpdateApplicationAsync( int id, XApplicationDto item, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Remove Specified Item ... /// /// /// /// /// /// Task RemoveApplicationAsync( int id, bool softDelete = true, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Retrieve an Item by Providing it's ID ... /// /// /// /// /// /// /// Task GetApplicationAsync( int id, bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items ... /// /// /// /// /// /// /// Task> GetAllApplicationAsync( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items as Async Enumerable ... /// /// /// /// /// /// /// IAsyncEnumerable GetAllApplicationAsAsyncEnumerable( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find an Item By Providing a Conditional Expression ... /// /// /// /// /// /// Task FindOneApplicationAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find a Collection of Items By Providing a Conditional Expression ... /// /// /// /// /// /// /// Task> FindManyApplicationAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve Items based on XQuery Pagination Structure ... /// /// /// /// /// /// /// /// Task> QueryApplicationAsync( XQuery query, bool ignoreSoftDeleteds = true, Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); #endregion // #region ApiKey ... /// /// Add Specified Item ... /// /// /// /// /// Task AddApiKeyAsync( XApiKey item, XUserClaimsInfoDto userInfo, CancellationToken cancellationToken = default ); /// /// Update Specified Item ... /// /// /// /// /// /// Task UpdateApiKeyAsync( int id, XApiKeyDto item, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Remove Specified Item ... /// /// /// /// /// /// Task RemoveApiKeyAsync( int id, bool softDelete = true, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Retrieve an Item by Providing it's ID ... /// /// /// /// /// /// /// Task GetApiKeyAsync( int id, bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items ... /// /// /// /// /// /// /// Task> GetAllApiKeyAsync( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items as Async Enumerable ... /// /// /// /// /// /// /// IAsyncEnumerable GetAllApiKeyAsAsyncEnumerable( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find an Item By Providing a Conditional Expression ... /// /// /// /// /// /// Task FindOneApiKeyAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find a Collection of Items By Providing a Conditional Expression ... /// /// /// /// /// /// /// Task> FindManyApiKeyAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve Items based on XQuery Pagination Structure ... /// /// /// /// /// /// /// /// Task> QueryApiKeyAsync( XQuery query, bool ignoreSoftDeleteds = true, Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); #endregion // #region ApiKeyUsage ... /// /// Add Specified Item ... /// /// /// /// /// Task AddApiKeyUsageAsync( XApiKeyUsageDto item, XUserClaimsInfoDto userInfo, CancellationToken cancellationToken = default ); /// /// Update Specified Item ... /// /// /// /// /// /// Task UpdateApiKeyUsageAsync( int id, XApiKeyUsageDto item, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Remove Specified Item ... /// /// /// /// /// /// Task RemoveApiKeyUsageAsync( int id, bool softDelete = true, XUserClaimsInfoDto userInfo = null, CancellationToken cancellationToken = default ); /// /// Retrieve an Item by Providing it's ID ... /// /// /// /// /// /// /// Task GetApiKeyUsageAsync( int id, bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items ... /// /// /// /// /// /// /// Task> GetAllApiKeyUsageAsync( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve all Items as Async Enumerable ... /// /// /// /// /// /// /// IAsyncEnumerable GetAllApiKeyUsageAsAsyncEnumerable( bool ignoreSoftDeleteds = true, XUserClaimsInfoDto userInfo = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find an Item By Providing a Conditional Expression ... /// /// /// /// /// /// Task FindOneApiKeyUsageAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Find a Collection of Items By Providing a Conditional Expression ... /// /// /// /// /// /// /// Task> FindManyApiKeyUsageAsync( Expression> predicate, bool ignoreSoftDeleteds = true, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); /// /// Retrieve Items based on XQuery Pagination Structure ... /// /// /// /// /// /// /// /// Task> QueryApiKeyUsageAsync( XQuery query, bool ignoreSoftDeleteds = true, Expression> predicate = null, Func, IOrderedQueryable> orderBuilder = null, Func, IIncludableQueryable> includeBuilder = null, CancellationToken cancellationToken = default ); #endregion // #region Custom Actions ... #endregion // #region Enrichers ... #endregion } }