לדלג לתוכן

1.3 ארכיטקטורה נקייה תרגול

בניית שכבות

תרגיל 1 - ישויות

כתבו ישות Project לפרויקט TaskFlow. ישות Project צריכה:
- שדות: id, name, description, owner_id, created_at, is_archived
- מתודה archive() שמסמנת את הפרויקט כמוארכב
- מתודה can_be_modified_by(user_id: int) -> bool שבודקת אם משתמש מסוים הוא הבעלים

דרישה: הישות לא צריכה לדעת על SQLite, FastAPI, או כל ספרייה חיצונית.

תרגיל 2 - Use Case

כתבו את CreateProjectUseCase שמקבל:
- שם פרויקט
- תיאור
- מזהה הבעלים

ועושה:
1. מוודא שהשם לא ריק ולא ארוך מ-100 תווים
2. מוודא שלמשתמש אין כבר יותר מ-10 פרויקטים פעילים
3. יוצר ושומר את הפרויקט

צריכים להגדיר ממשק ProjectRepository עם המתודות שצריכים.

תרגיל 3 - מתאם

כתבו InMemoryProjectRepository - מימוש של ProjectRepository שמאחסן נתונים בזיכרון בלבד (ללא SQLite). זה יהיה שימושי לבדיקות.

תרגיל 4 - בדיקה

כתבו בדיקה אחת ל-CreateProjectUseCase שבודקת שמשתמש עם 10 פרויקטים קיימים לא יכול ליצור פרויקט נוסף. השתמשו ב-InMemoryProjectRepository מהתרגיל הקודם.