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);