using MediatR;
using TakeoutSaaS.Application.Identity.Contracts;

namespace TakeoutSaaS.Application.Identity.Commands;

/// <summary>
/// 创建权限。
/// </summary>
public sealed record CreatePermissionCommand : IRequest<PermissionDto>
{
    /// <summary>
    /// 父级权限 ID。
    /// </summary>
    public long ParentId { get; init; } = 0;

    /// <summary>
    /// 排序序号。
    /// </summary>
    public int SortOrder { get; init; } = 0;

    /// <summary>
    /// 权限类型（group/leaf）。
    /// </summary>
    public string Type { get; init; } = "leaf";

    /// <summary>
    /// 权限名称。
    /// </summary>
    public string Name { get; init; } = string.Empty;

    /// <summary>
    /// 权限编码。
    /// </summary>
    public string Code { get; init; } = string.Empty;

    /// <summary>
    /// 描述。
    /// </summary>
    public string? Description { get; init; }
}
