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 מהתרגיל הקודם.