- Wire up lists and todos to C# backend with full CRUD persistence - Add models, DTOs, repositories, and services for lists and todo lists/items - Preserve SQLite DB across vault rebuild/load cycles - Add session store for vault password persistence across navigation - Add inline name input for creating lists and todo lists in SidePanel - Clear editor panel on section change with empty state placeholder - Default markdown editor to preview mode on item selection - Decompose EditorPanel into sub-components: - editor/FragmentEditor, editor/TodoEditor, editor/MarkdownEditor - Shared markdown utilities in utils/markdown.ts - Strip verbose console/eprintln logging from frontend and Tauri backend - Add graceful shutdown with vault persistence on window close Co-Authored-By: Oz <oz-agent@warp.dev>
41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
namespace Journal.Core.Models;
|
|
|
|
public class ListDocument
|
|
{
|
|
public Guid Id { get; }
|
|
public string Label { get; set; }
|
|
public string Content { get; set; }
|
|
public DateTimeOffset CreatedAt { get; set; }
|
|
public DateTimeOffset UpdatedAt { get; set; }
|
|
|
|
public ListDocument(string label, string content = "")
|
|
{
|
|
Validate(label);
|
|
|
|
Id = Guid.NewGuid();
|
|
Label = label.Trim();
|
|
Content = content;
|
|
CreatedAt = DateTimeOffset.Now;
|
|
UpdatedAt = CreatedAt;
|
|
}
|
|
|
|
public ListDocument(Guid id, string label, string content, DateTimeOffset createdAt, DateTimeOffset updatedAt)
|
|
{
|
|
if (id == Guid.Empty)
|
|
throw new ArgumentException("Id is required", nameof(id));
|
|
Validate(label);
|
|
|
|
Id = id;
|
|
Label = label.Trim();
|
|
Content = content;
|
|
CreatedAt = createdAt;
|
|
UpdatedAt = updatedAt;
|
|
}
|
|
|
|
private static void Validate(string label)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(label))
|
|
throw new ArgumentException("Label is required", nameof(label));
|
|
}
|
|
}
|