using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.Query; using xModels.Base; using xModels.Dtos; namespace xDataService.Interfaces { /// /// an Interface for Base RepositoryService Actions Providing Using Controllers ... /// /// /// /// public interface IXBaseServiceController where TEntity : XBaseEntity where TDto : XBaseEntityDto { // IXBaseRepositoryService RepositoryService { get; } Func, IOrderedQueryable> DefaultOrderBuilder { get; } Func, IIncludableQueryable> DefaultIncludeBuilder { get; } // #region Add ... Task> Add( TDto item, CancellationToken cancellationToken = default ); Task> AddOrUpdate( TDto item, CancellationToken cancellationToken = default ); Task AddMany( XBaseRangeRequest request, CancellationToken cancellationToken = default ); #endregion // #region Retrieve ... Task> Get( [FromRoute] TKey id, [FromQuery] bool ignoreSoftDeleteds = true, [FromQuery] bool useDefaultIncludes = false, CancellationToken cancellationToken = default ); Task>> GetAll( [FromQuery] bool ignoreSoftDeleteds = true, [FromQuery] bool useDefaultOrders = false, [FromQuery] bool useDefaultIncludes = false, CancellationToken cancellationToken = default ); Task> FindOne( [FromRoute] string query, [FromQuery] bool ignoreSoftDeleteds = true, [FromQuery] bool useDefaultIncludes = false, CancellationToken cancellationToken = default ); Task>> FindMany( [FromRoute] string query, [FromQuery] bool ignoreSoftDeleteds = true, [FromQuery] bool useDefaultOrders = false, [FromQuery] bool useDefaultIncludes = false, CancellationToken cancellationToken = default ); Task>> Query( [FromQuery] XQuery query, [FromQuery] bool ignoreSoftDeleteds = true, [FromQuery] bool useDefaultOrders = false, [FromQuery] bool useDefaultIncludes = false, CancellationToken cancellationToken = default ); #endregion // #region Update ... Task> Update( [FromRoute] TKey id, [FromBody] TDto item, CancellationToken cancellationToken = default ); Task> UpdateMany( [FromBody] XBaseRangeRequest request, CancellationToken cancellationToken = default ); #endregion // #region Exists ... Task> IsExists( [FromRoute] TKey id, [FromQuery] bool ignoreSoftDeletedss = true, CancellationToken cancellationToken = default ); #endregion // #region Remove ... Task> Remove( [FromRoute] TKey id, [FromQuery] bool softDelete = true, CancellationToken cancellationToken = default ); Task RemoveMany( [FromBody] XBaseRangeRequest request, [FromQuery] bool softDelete = true, CancellationToken cancellationToken = default ); #endregion } }