文件内容 IPasteDefaultHelper.cs 9 KB 9787 字符
using Microsoft.EntityFrameworkCore;
using PasteApeart.Application.Contracts;
using PasteApeart.Helper;
using System.Reflection;

namespace PasteApeart.Application
{
    /// <summary>
    /// 
    /// </summary>
    public interface IPasteDefaultHelper
    {
        //static abstract Task<int> ExecuteCountQuery(IQueryable query, Type entityType);
        //static abstract VoloModelInfo ReadModelProperties(object model, Type modelType, bool IsListModel = false);
        //static abstract void ValidateModel(object model, Type modelType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <param name="entityType"></param>
        /// <returns></returns>
        Task<int> ExecuteCountQuery(IQueryable query, Type entityType);
        
        /// <summary>
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="modelType"></param>
        /// <param name="IsListModel"></param>
        /// <returns></returns>
        VoloModelInfo ReadModelProperties(object model, Type modelType, bool IsListModel = false);
        
        /// <summary>
        /// 
        /// </summary>
        /// <param name="model"></param>
        /// <param name="modelType"></param>
        void ValidateModel(object model, Type modelType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <param name="entityType"></param>
        /// <returns></returns>
        object ApplyAllPasteIncludes(object query, Type entityType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <param name="entityType"></param>
        /// <param name="searchType"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        IQueryable ApplyPagingAndSorting(IQueryable query, Type entityType, Type searchType, object input);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="typeName"></param>
        /// <returns></returns>
        Type AutoFindType(string typeName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="searchType"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        IQueryable BuildDynamicQuery(DbContext _dbContext, Type entityType, Type searchType, object input);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="listDtoType"></param>
        /// <param name="dtos"></param>
        /// <returns></returns>
        Task BuildOuterData(DbContext _dbContext, Type listDtoType, List<object> dtos);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="dto"></param>
        /// <param name="dtoType"></param>
        /// <returns></returns>
        Task BuildOuterQuery(DbContext _dbContext, object dto, Type dtoType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task CheckEntityShortData(DbContext _dbContext, Type entityType, object entity);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <param name="entityType"></param>
        /// <param name="dtoType"></param>
        /// <returns></returns>
        Task<List<object>> ExecuteProjectionQuery(IQueryable query, Type entityType, Type dtoType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <param name="entityType"></param>
        /// <param name="dtoType"></param>
        /// <returns></returns>
        Task<List<object>> ExecuteProjectionQueryWithIncludes(IQueryable query, Type entityType, Type dtoType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="dtoType"></param>
        /// <param name="dtoValue"></param>
        /// <param name="id"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<object> FilterFirstOrDefaultAsync(DbContext _dbContext, Type entityType, Type dtoType, object dtoValue, object id, CancellationToken cancellationToken = default);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityName"></param>
        /// <returns></returns>
        object FindDbSetObject(DbContext _dbContext, Type entityName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityName"></param>
        /// <param name="suffix"></param>
        /// <returns></returns>
        Type FindDtoType(string entityName, string suffix);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="id"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<object> FindEntityByIdAsync(DbContext _dbContext, Type entityType, object id, CancellationToken cancellationToken = default);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="id"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<object> FindEntityByIdWithIncludeAsync(DbContext _dbContext, Type entityType, object id, CancellationToken cancellationToken = default);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityName"></param>
        /// <returns></returns>
        Type FindEntityType(string entityName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityType"></param>
        /// <param name="args"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task<object> FindFirstOrDefaultAsync(DbContext _dbContext, Type entityType, Dictionary<string, string> args, CancellationToken cancellationToken = default);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityName"></param>
        /// <returns></returns>
        Type FindQueryType(string entityName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="sourceType"></param>
        /// <param name="destinationType"></param>
        void ForeachMapProperties(object source, object destination, Type sourceType, Type destinationType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        PropertyInfo GetPropertyThrowException(Type entityType, string propertyName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        object GetPropertyValue(object obj, string propertyName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="attributeType"></param>
        /// <returns></returns>
        bool HasAttributeType(Type entityType, Type attributeType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityType"></param>
        /// <returns></returns>
        bool HasPasteIncludeProperties(Type entityType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_search"></param>
        /// <param name="searchType"></param>
        /// <param name="search"></param>
        /// <returns></returns>
        InputSearchBase MapperToQueryModel(string _search, Type searchType, object search);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="sourceType"></param>
        /// <param name="destinationType"></param>
        void MapProperties(object source, object destination, Type sourceType, Type destinationType);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        PropertyInfo ReadCurrentProperty(Type entityType, string propertyName);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="listDtoType"></param>
        /// <param name="dataList"></param>
        /// <param name="searchType"></param>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        Task ReadExtendBind(DbContext _dbContext, Type listDtoType, List<object> dataList, Type searchType, object searchModel);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dbContext"></param>
        /// <param name="entityName"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<object> ReadSingleListDtoByIdAsync(DbContext _dbContext, string entityName, object id);
    }
}
​ ​