Try your search with a different keyword or use * as a wildcard.
using System.Linq.Expressions;
using Nop.Core;
using Nop.Core.Caching;
namespace Nop.Data;
/// <summary>
/// Represents an entity repository
/// </summary>
/// <typeparam name="TEntity">Entity type</typeparam>
public partial interface IRepository<TEntity> where TEntity : BaseEntity
{
#region Methods
/// <summary>
/// Get the entity entry
/// </summary>
/// <param name="id">Entity entry identifier</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <param name="useShortTermCache">Whether to use short term cache instead of static cache</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the entity entry
/// </returns>
Task<TEntity> GetByIdAsync(int? id, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true, bool useShortTermCache = false);
/// <summary>
/// Get the entity entry
/// </summary>
/// <param name="id">Entity entry identifier</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// The entity entry
/// </returns>
TEntity GetById(int? id, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
/// <summary>
/// Get entity entries by identifiers
/// </summary>
/// <param name="ids">Entity entry identifiers</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the entity entries
/// </returns>
Task<IList<TEntity>> GetByIdsAsync(IList<int> ids, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the entity entries
/// </returns>
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the entity entries
/// </returns>
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func = null,
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>Entity entries</returns>
IList<TEntity> GetAll(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the entity entries
/// </returns>
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func,
Func<ICacheKeyService, Task<CacheKey>> getCacheKey, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <param name="getOnlyTotalCount">Whether to get only the total number of entries without actually loading data</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the paged list of entity entries
/// </returns>
Task<IPagedList<TEntity>> GetAllPagedAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
int pageIndex = 0, int pageSize = int.MaxValue, bool getOnlyTotalCount = false, bool includeDeleted = true);
/// <summary>
/// Get all entity entries
/// </summary>
/// <param name="func">Function to select entries</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <param name="getOnlyTotalCount">Whether to get only the total number of entries without actually loading data</param>
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the paged list of entity entries
/// </returns>
Task<IPagedList<TEntity>> GetAllPagedAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func = null,
int pageIndex = 0, int pageSize = int.MaxValue, bool getOnlyTotalCount = false, bool includeDeleted = true);
/// <summary>
/// Insert the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task InsertAsync(TEntity entity, bool publishEvent = true);
/// <summary>
/// Insert the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Insert(TEntity entity, bool publishEvent = true);
/// <summary>
/// Insert entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task InsertAsync(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Insert entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Insert(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Update the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task UpdateAsync(TEntity entity, bool publishEvent = true);
/// <summary>
/// Update the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Update(TEntity entity, bool publishEvent = true);
/// <summary>
/// Update entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task UpdateAsync(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Update entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Update(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Delete the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task DeleteAsync(TEntity entity, bool publishEvent = true);
/// <summary>
/// Delete the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Delete(TEntity entity, bool publishEvent = true);
/// <summary>
/// Delete entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task DeleteAsync(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Delete entity entries
/// </summary>
/// <param name="entities">Entity entries</param>
/// <param name="publishEvent">Whether to publish event notification</param>
void Delete(IList<TEntity> entities, bool publishEvent = true);
/// <summary>
/// Delete entity entries by the passed predicate
/// </summary>
/// <param name="predicate">A function to test each element for a condition</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the number of deleted records
/// </returns>
Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate);
/// <summary>
/// Delete entity entries by the passed predicate
/// </summary>
/// <param name="predicate">A function to test each element for a condition</param>
/// <returns>
/// The number of deleted records
/// </returns>
int Delete(Expression<Func<TEntity, bool>> predicate);
/// <summary>
/// Loads the original copy of the entity entry
/// </summary>
/// <param name="entity">Entity entry</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the copy of the passed entity entry
/// </returns>
Task<TEntity> LoadOriginalCopyAsync(TEntity entity);
/// <summary>
/// Truncates database table
/// </summary>
/// <param name="resetIdentity">Performs reset identity column</param>
/// <returns>A task that represents the asynchronous operation</returns>
Task TruncateAsync(bool resetIdentity = false);
#endregion
#region Properties
/// <summary>
/// Gets a table
/// </summary>
IQueryable<TEntity> Table { get; }
#endregion
}