SarahXia0405 commited on
Commit
7361291
·
verified ·
1 Parent(s): 8223f53

Create models.py

Browse files
Files changed (1) hide show
  1. api/models.py +49 -0
api/models.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # api/models.py
2
+ from __future__ import annotations
3
+ from typing import List, Optional, Literal
4
+ from pydantic import BaseModel, Field
5
+
6
+
7
+ class PersonContact(BaseModel):
8
+ name: str = "N/A"
9
+ email: str = ""
10
+
11
+
12
+ class CourseDirectoryItem(BaseModel):
13
+ id: str
14
+ name: str
15
+ instructor: PersonContact = Field(default_factory=PersonContact)
16
+ teachingAssistant: PersonContact = Field(default_factory=PersonContact)
17
+
18
+
19
+ class WorkspaceMember(BaseModel):
20
+ id: str
21
+ name: str
22
+ email: Optional[str] = ""
23
+ role: Optional[Literal["owner", "member"]] = "member"
24
+
25
+
26
+ class WorkspaceCourseRef(BaseModel):
27
+ id: Optional[str] = None
28
+ name: Optional[str] = None
29
+ instructor: Optional[PersonContact] = None
30
+ teachingAssistant: Optional[PersonContact] = None
31
+
32
+
33
+ class Workspace(BaseModel):
34
+ id: str
35
+ type: Literal["individual", "group"]
36
+ category: Optional[Literal["course", "personal"]] = None
37
+
38
+ # ✅ Group Name:前端要编辑的 groupName 就用 name
39
+ name: Optional[str] = None
40
+
41
+ # ✅ Group #
42
+ groupNo: Optional[int] = None
43
+
44
+ # ✅ Members
45
+ members: List[WorkspaceMember] = Field(default_factory=list)
46
+
47
+ # ✅ Course binding
48
+ courseId: Optional[str] = None
49
+ courseInfo: Optional[WorkspaceCourseRef] = None