using NetAdmin.Domain.DbMaps.Dependency;
using NetAdmin.Domain.DbMaps.Dependency.Fields;
using NetAdmin.Domain.Enums.Sys;
namespace NetAdmin.Domain.DbMaps.Sys;
///
/// 菜单表
///
[Index($"idx_{{tablename}}_{nameof(Name)}", nameof(Name), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Menu))]
public record Sys_Menu : VersionEntity, IFieldSort
{
///
/// 子节点或详情页需要高亮的上级菜单路由地址
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)]
[JsonIgnore]
public virtual string Active { get; init; }
///
/// 子节点
///
[JsonIgnore]
[Navigate(nameof(ParentId))]
public IEnumerable Children { get; init; }
///
/// 背景颜色
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_7)]
[JsonIgnore]
public virtual string Color { get; init; }
///
/// 组件
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)]
[JsonIgnore]
public virtual string Component { get; init; }
///
/// 是否整页路由
///
[Column]
[JsonIgnore]
public virtual bool FullPageRouting { get; init; }
///
/// 是否隐藏菜单
///
[Column]
[JsonIgnore]
public virtual bool Hidden { get; init; }
///
/// 是否隐藏面包屑
///
[Column]
[JsonIgnore]
public virtual bool HiddenBreadCrumb { get; init; }
///
/// 图标
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)]
[JsonIgnore]
public virtual string Icon { get; init; }
///
/// 菜单名称
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)]
[JsonIgnore]
public virtual string Name { get; init; }
///
/// 父编号
///
[Column]
[JsonIgnore]
public virtual long ParentId { get; init; }
///
/// 菜单路径
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)]
[JsonIgnore]
public virtual string Path { get; init; }
///
/// 重定向地址
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)]
[JsonIgnore]
public virtual string Redirect { get; init; }
///
/// 拥有此菜单的角色集合
///
[JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_RoleMenu))]
public ICollection Roles { get; init; }
///
/// 排序值,越大越前
///
[Column]
[JsonIgnore]
public virtual long Sort { get; init; }
///
/// 标签
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31)]
[JsonIgnore]
public virtual string Tag { get; init; }
///
/// 菜单标题
///
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_63)]
[JsonIgnore]
public virtual string Title { get; init; }
///
/// 菜单类型
///
[Column]
[JsonIgnore]
public virtual MenuTypes Type { get; init; }
}