Files
xDataService/Interfaces/IXBaseRepositoryController.cs
2026-05-16 01:16:14 +03:30

123 lines
4.0 KiB
C#

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
{
/// <summary>
/// an Interface for Base Repository Actions Providing Using Controllers ...
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <typeparam name="TDto"></typeparam>
/// <typeparam name="TKey"></typeparam>
public interface IXBaseRepositoryController<TEntity, TKey>
where TEntity : XBaseEntity<TKey>
{
//
IXBaseRepository<TEntity, TKey> Repository { get; }
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> DefaultOrderBuilder { get; }
Func<IQueryable<TEntity>, IIncludableQueryable<TEntity, object>> DefaultIncludeBuilder { get; }
//
#region Add ...
Task<ActionResult<TEntity>> Add(
[FromBody] TEntity item,
CancellationToken cancellationToken = default
);
Task<ActionResult<TEntity>> AddOrUpdate(
[FromBody] TEntity item,
CancellationToken cancellationToken = default
);
Task<ActionResult> AddMany(
[FromBody] XBaseRangeRequest<TEntity> request,
CancellationToken cancellationToken = default
);
#endregion
//
#region Retrieve ...
Task<ActionResult<TEntity>> Get(
[FromRoute] TKey id,
[FromQuery] bool ignoreSoftDeleteds = true,
[FromQuery] bool useDefaultIncludes = false,
CancellationToken cancellationToken = default
);
Task<ActionResult<IEnumerable<TEntity>>> GetAll(
[FromQuery] bool ignoreSoftDeleteds = true,
[FromQuery] bool useDefaultOrders = false,
[FromQuery] bool useDefaultIncludes = false,
CancellationToken cancellationToken = default
);
Task<ActionResult<TEntity>> FindOne(
[FromRoute] string query,
[FromQuery] bool ignoreSoftDeleteds = true,
[FromQuery] bool useDefaultIncludes = false,
CancellationToken cancellationToken = default
);
Task<ActionResult<IEnumerable<TEntity>>> FindMany(
[FromRoute] string query,
[FromQuery] bool ignoreSoftDeleteds = true,
[FromQuery] bool useDefaultOrders = false,
[FromQuery] bool useDefaultIncludes = false,
CancellationToken cancellationToken = default
);
Task<ActionResult<XQueryResult<TEntity>>> Query(
[FromQuery] XQuery query,
[FromQuery] bool ignoreSoftDeleteds = true,
[FromQuery] bool useDefaultOrders = false,
[FromQuery] bool useDefaultIncludes = false,
CancellationToken cancellationToken = default
);
#endregion
//
#region Update ...
Task<ActionResult<TEntity>> Update(
[FromRoute] TKey id,
[FromBody] TEntity item,
CancellationToken cancellationToken = default
);
Task<ActionResult<bool>> UpdateMany(
[FromBody] XBaseRangeRequest<TEntity> request,
CancellationToken cancellationToken = default
);
#endregion
//
#region Exists ...
Task<ActionResult<bool>> IsExists(
[FromRoute] TKey id,
[FromQuery] bool ignoreSoftDeleteds = true,
CancellationToken cancellationToken = default
);
#endregion
//
#region Remove ...
Task<ActionResult<TEntity>> Remove(
[FromRoute] TKey id,
[FromQuery] bool softDelete = true,
CancellationToken cancellationToken = default
);
Task<ActionResult> RemoveMany(
[FromBody] XBaseRangeRequest<TEntity> request,
[FromQuery] bool softDelete = true,
CancellationToken cancellationToken = default
);
#endregion
}
}