using System.ComponentModel.DataAnnotations;

namespace Journal.Core.Dtos;

public record TodoListDto(
    Guid Id,
    string Label,
    DateTimeOffset CreatedAt,
    List<TodoItemDto> Items
);

public record TodoItemDto(
    Guid Id,
    Guid ListId,
    string Text,
    bool Done,
    int SortOrder
);

public record CreateTodoListDto(
    [property: Required(AllowEmptyStrings = false)] string Label
);

public record UpdateTodoListDto(
    string? Label = null
);

public record CreateTodoItemDto(
    [property: Required] Guid ListId,
    [property: Required(AllowEmptyStrings = false)] string Text,
    int? SortOrder = null
);

public record UpdateTodoItemDto(
    string? Text = null,
    bool? Done = null,
    int? SortOrder = null
);
