using SqlSugar;

namespace OpenAuth.Repository;

/// <summary>
/// 数据权限对应表的实体类。
/// </summary>
[SugarTable("base_data_auth")]
public class BaseDataAuth
{
    /// <summary>
    /// 主键ID。
    /// </summary>
    [SugarColumn(IsPrimaryKey = true, ColumnName = "id")]
    public string Id { get; set; }

    /// <summary>
    /// 权限名称。
    /// </summary>
    [SugarColumn(ColumnName = "name")]
    public string Name { get; set; }

    /// <summary>
    /// 权限类型。1表示普通权限，2表示自定义表单权限。
    /// </summary>
    [SugarColumn(ColumnName = "type")]
    public int Type { get; set; }

    /// <summary>
    /// 权限编码。
    /// </summary>
    [SugarColumn(ColumnName = "code")]
    public string Code { get; set; }

    /// <summary>
    /// 对象主键。
    /// </summary>
    [SugarColumn(ColumnName = "object_id")]
    public string ObjectId { get; set; }

    /// <summary>
    /// 对象类型。1表示角色，2表示用户。
    /// </summary>
    [SugarColumn(ColumnName = "object_type")]
    public int ObjectType { get; set; }

    /// <summary>
    /// 条件公式。
    /// </summary>
    [SugarColumn(ColumnName = "formula")]
    public string Formula { get; set; }

    /// <summary>
    /// 创建时间。
    /// </summary>
    [SugarColumn(ColumnName = "create_date")]
    public DateTime? CreateDate { get; set; }

    /// <summary>
    /// 创建用户ID。
    /// </summary>
    [SugarColumn(ColumnName = "create_user_id")]
    public string CreateUserId { get; set; }

    /// <summary>
    /// 创建用户名。
    /// </summary>
    [SugarColumn(ColumnName = "create_user_name")]
    public string CreateUserName { get; set; }

    /// <summary>
    /// 修改时间。
    /// </summary>
    [SugarColumn(ColumnName = "modify_date")]
    public DateTime? ModifyDate { get; set; }

    /// <summary>
    /// 修改用户ID。
    /// </summary>
    [SugarColumn(ColumnName = "modify_user_id")]
    public string ModifyUserId { get; set; }

    /// <summary>
    /// 修改用户名。
    /// </summary>
    [SugarColumn(ColumnName = "modify_user_name")]
    public string ModifyUserName { get; set; }

    /// <summary>
    /// 租户ID。
    /// </summary>
    [SugarColumn(ColumnName = "tenant_id")]
    public string TenantId { get; set; }
    
    /// <summary>
    /// 用户名/角色名
    /// </summary>
    [SugarColumn(ColumnName = "object_name")]
    public string ObjectName { get; set; }

    /// <summary>
    /// 自定义表单名称
    /// </summary>
    [SugarColumn(ColumnName = "code_name")]
    public string CodeName { get; set; }
}