using NovelSoftware.Domain;
namespace NovelSoftware.Application.Dtos;
/// An outline node with its subtree inlined — the shape the outline view renders.
public record OutlineNodeDto(
Guid Id,
Guid ProjectId,
Guid? ParentId,
OutlineNodeType NodeType,
string Title,
string? Summary,
int SortOrder,
Guid? ChapterId,
IReadOnlyList Children);
public record CreateOutlineNodeRequest(
string Title,
OutlineNodeType NodeType = OutlineNodeType.Beat,
Guid? ParentId = null,
string? Summary = null,
int? SortOrder = null,
Guid? ChapterId = null);
public record UpdateOutlineNodeRequest(
string? Title = null,
OutlineNodeType? NodeType = null,
string? Summary = null,
int? SortOrder = null,
Guid? ChapterId = null);
/// Moves a node to a new parent and/or position. A null means root level.
public record MoveOutlineNodeRequest(Guid? ParentId, int SortOrder);