using SqlSugar; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Reflection; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
using WIDESEA_Core.DB.Models; 
 | 
using WIDESEA_Core.Tenants; 
 | 
  
 | 
namespace WIDESEA_Core.DB 
 | 
{ 
 | 
    public class RepositorySetting 
 | 
    { 
 | 
        private static readonly Lazy<IEnumerable<Type>> AllEntitys = new(() => 
 | 
        { 
 | 
            var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory; 
 | 
            var referencedAssemblies = System.IO.Directory.GetFiles(path, MainDb.AssemblyName).Select(Assembly.LoadFrom).FirstOrDefault(); 
 | 
            return referencedAssemblies 
 | 
                .GetTypes() 
 | 
                .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(BaseEntity))) 
 | 
                .Where(it => it.FullName != null && it.FullName.StartsWith(MainDb.EntityNameSpace)); 
 | 
        }); 
 | 
  
 | 
        public static IEnumerable<Type> Entitys => AllEntitys.Value; 
 | 
  
 | 
        /// <summary> 
 | 
        /// 配置实体软删除过滤器<br/> 
 | 
        /// 统一过滤 软删除 无需自己写条件 
 | 
        /// </summary> 
 | 
        public static void SetDeletedEntityFilter(SqlSugarScopeProvider db) 
 | 
        { 
 | 
            //db.QueryFilter.AddTableFilter<IDeleteFilter>(it => it.IsDeleted == false); 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 配置租户 
 | 
        /// </summary> 
 | 
        public static void SetTenantEntityFilter(SqlSugarScopeProvider db) 
 | 
        { 
 | 
            if (App.User is not { UserId: > 0, TenantId: > 0 }) 
 | 
            { 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            //多租户 单表 
 | 
            //db.QueryFilter.AddTableFilter<ITenantEntity>(it => it.TenantId == App.User.TenantId || it.TenantId == 0); 
 | 
  
 | 
            //多租户 多表 
 | 
            //db.SetTenantTable(App.User.TenantId.ToString()); 
 | 
        } 
 | 
    } 
 | 
} 
 |