44 lines
964 B
Python
44 lines
964 B
Python
import json
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, field_validator
|
|
|
|
|
|
class ClassCreate(BaseModel):
|
|
name: str
|
|
cohort_year: int
|
|
description: str | None = None
|
|
|
|
|
|
class ClassUpdate(BaseModel):
|
|
name: str | None = None
|
|
cohort_year: int | None = None
|
|
description: str | None = None
|
|
|
|
|
|
class ClassOut(BaseModel):
|
|
id: int
|
|
name: str
|
|
cohort_year: int
|
|
description: str | None
|
|
invite_code: str | None = None
|
|
member_count: int = 0
|
|
enabled_modules: list[str] | None = None
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
@field_validator("enabled_modules", mode="before")
|
|
@classmethod
|
|
def parse_enabled_modules(cls, v):
|
|
if isinstance(v, str):
|
|
try:
|
|
return json.loads(v)
|
|
except (json.JSONDecodeError, TypeError):
|
|
return None
|
|
return v
|
|
|
|
|
|
class ModuleUpdate(BaseModel):
|
|
enabled_modules: list[str]
|