From 2920252f134d0fbf74873ea2fb944adcacb1d278 Mon Sep 17 00:00:00 2001 From: bvandeusen Date: Sat, 4 Apr 2026 23:38:19 -0400 Subject: [PATCH] feat(knowledge): add KnowledgeItem model --- lib/data/models/knowledge_item.dart | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/data/models/knowledge_item.dart diff --git a/lib/data/models/knowledge_item.dart b/lib/data/models/knowledge_item.dart new file mode 100644 index 0000000..d8ff992 --- /dev/null +++ b/lib/data/models/knowledge_item.dart @@ -0,0 +1,51 @@ +class KnowledgeItem { + final int id; + final String noteType; // 'note' | 'person' | 'place' | 'list' | 'task' + final String title; + final String body; + final List tags; + final int? projectId; + final int? milestoneId; + final int? parentId; + // Task-only fields (null for non-tasks) + final String? status; // 'todo' | 'in_progress' | 'done' | 'cancelled' + final String? priority; // 'low' | 'normal' | 'high' + final String? dueDate; + final DateTime createdAt; + final DateTime updatedAt; + + const KnowledgeItem({ + required this.id, + required this.noteType, + required this.title, + required this.body, + required this.tags, + this.projectId, + this.milestoneId, + this.parentId, + this.status, + this.priority, + this.dueDate, + required this.createdAt, + required this.updatedAt, + }); + + factory KnowledgeItem.fromJson(Map json) => KnowledgeItem( + id: json['id'] as int, + noteType: json['note_type'] as String? ?? 'note', + title: json['title'] as String? ?? '', + body: json['body'] as String? ?? '', + tags: (json['tags'] as List?) + ?.map((e) => e as String) + .toList() ?? + [], + projectId: json['project_id'] as int?, + milestoneId: json['milestone_id'] as int?, + parentId: json['parent_id'] as int?, + status: json['status'] as String?, + priority: json['priority'] as String?, + dueDate: json['due_date'] as String?, + createdAt: DateTime.parse(json['created_at'] as String), + updatedAt: DateTime.parse(json['updated_at'] as String), + ); +}