3.4 CQRS ו Event Sourcing תרגול
CQRS¶
תרגיל 1¶
בנו CQRS בסיסי עבור ניהול פרויקטים ב-TaskFlow.
Command side:
- CreateProjectCommand(name, owner_id)
- ArchiveProjectCommand(project_id, owner_id)
Query side:
- GetProjectQuery(project_id) - מחזיר פרטי פרויקט
- GetActiveProjectsQuery(owner_id) - מחזיר פרויקטים פעילים של משתמש
- GetProjectStatsQuery(project_id) - מחזיר מספר משימות בכל סטטוס
השתמשו ב-InMemory storage לשני הצדדים.
Event Sourcing¶
תרגיל 2¶
הוסיפו Event Sourcing לניהול תגובות של משתמשים:
אירועים:
- CommentAdded(task_id, comment_id, user_id, text)
- CommentEdited(task_id, comment_id, new_text)
- CommentDeleted(task_id, comment_id)
כתבו CommentHistory שמקבל task_id ומחזיר:
- רשימת כל התגובות הנוכחיות (לאחר מחיקות ועריכות)
- רשימת כל הגרסאות של תגובה מסוימת (audit trail)