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 Repository Actions Providing Using Controllers ...
///
///
///
///
public interface IXBaseRepositoryController
where TEntity : XBaseEntity
{
//
IXBaseRepository Repository { get; }
Func, IOrderedQueryable> DefaultOrderBuilder { get; }
Func, IIncludableQueryable> DefaultIncludeBuilder { get; }
//
#region Add ...
Task> Add(
[FromBody] TEntity item,
CancellationToken cancellationToken = default
);
Task> AddOrUpdate(
[FromBody] TEntity item,
CancellationToken cancellationToken = default
);
Task AddMany(
[FromBody] 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] TEntity item,
CancellationToken cancellationToken = default
);
Task> UpdateMany(
[FromBody] XBaseRangeRequest request,
CancellationToken cancellationToken = default
);
#endregion
//
#region Exists ...
Task> IsExists(
[FromRoute] TKey id,
[FromQuery] bool ignoreSoftDeleteds = 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
}
}