Skip to content
Extraits de code Groupes Projets
schemas.py 6,78 ko
Newer Older
  • Learn to ignore specific revisions
  • Brieuc Dubois's avatar
    Brieuc Dubois a validé
    from pydantic import BaseModel, NaiveDatetime
    
    
    from models import UserType
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class LoginData(BaseModel):
        email: str
        password: str
    
    
    class RegisterData(BaseModel):
        email: str
        password: str
        nickname: str
        is_tutor: bool
    
    
    
    class User(BaseModel):
        id: int
    
        type: int
    
        availability: int
    
        is_active: bool
    
        ui_language: str | None
        home_language: str | None
        target_language: str | None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        birthdate: NaiveDatetime | None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        gender: str | None = None
    
        calcom_link: str | None
    
        study_id: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        last_survey: NaiveDatetime | None = None
    
    
        class Config:
            from_attributes = True
    
    
    class UserCreate(BaseModel):
    
        email: str
        nickname: str | None = None
    
        password: str
        type: int = UserType.STUDENT.value
    
        availability: int = 0
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        is_active: bool = True
    
        ui_language: str | None = None
        home_language: str | None = None
        target_language: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        birthdate: NaiveDatetime | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        gender: str | None = None
    
        calcom_link: str | None = None
    
        study_id: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        last_survey: NaiveDatetime | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class UserUpdate(BaseModel):
        email: str | None = None
        nickname: str | None = None
        password: str | None = None
        type: int | None = None
        availability: int | None = None
        is_active: bool | None = None
    
        ui_language: str | None = None
        home_language: str | None = None
        target_language: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        birthdate: NaiveDatetime | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        gender: str | None = None
    
        calcom_link: str | None = None
    
        study_id: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        last_survey: NaiveDatetime | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        class Config:
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
            from_attributes = True
    
    
    class ContactCreate(BaseModel):
        user_id: int
    
        class Config:
            from_attributes = True
    
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class UserSurveyWeeklyCreate(BaseModel):
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        q1: float | None = None
        q2: float | None = None
        q3: float | None = None
        q4: float | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class Session(BaseModel):
        id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        created_at: NaiveDatetime
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        is_active: bool
        users: list[User]
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        start_time: NaiveDatetime
        end_time: NaiveDatetime
    
        language: str
    
        length: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
        class Config:
            from_attributes = True
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class SessionUpdate(BaseModel):
        is_active: bool | None = None
    
        language: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
        class Config:
            from_attributes = True
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class SessionSatisfyCreate(BaseModel):
        usefullness: int
        easiness: int
        remarks: str | None = None
    
    
    
    class SessionBookingCreate(BaseModel):
        start_time: NaiveDatetime
        end_time: NaiveDatetime
    
    
    
    class MessageFeedback(BaseModel):
        id: int
        message_id: int
        start: int
        end: int
        content: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        date: NaiveDatetime
    
    
        class Config:
            from_attributes = True
    
        def to_dict(self):
            return {
                "id": self.id,
                "message_id": self.message_id,
                "start": self.start,
                "end": self.end,
                "content": self.content,
                "date": self.date.isoformat(),
            }
    
    
    class MessageFeedbackCreate(BaseModel):
        start: int
        end: int
        content: str | None = None
    
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class Message(BaseModel):
        id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        message_id: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        content: str
        user_id: int
        session_id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        created_at: NaiveDatetime
    
        reply_to_message_id: str | None = None
    
        feedbacks: list[MessageFeedback]
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
        class Config:
            from_attributes = True
    
    
        def to_dict(self):
            return {
                "id": self.id,
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
                "message_id": self.message_id,
    
                "content": self.content,
                "user_id": self.user_id,
                "session_id": self.session_id,
                "created_at": self.created_at.isoformat(),
    
                "reply_to_message_id": self.reply_to_message_id,
    
                "feedbacks": [feedback.to_dict() for feedback in self.feedbacks],
    
    class MessageMetadataCreate(BaseModel):
        message: str
        date: int
    
        class Config:
            from_attributes = True
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class MessageCreate(BaseModel):
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        message_id: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        content: str
    
        reply_to_message_id: str | None = None
    
        metadata: list[MessageMetadataCreate]
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
        class Config:
    
            from_attributes = True
    
    class TestTypingEntryCreate(BaseModel):
        exerciceId: int
        position: int
        downtime: int
        uptime: int
        keyCode: int
        keyValue: str
    
    
    
    class TestTypingCreate(BaseModel):
    
        entries: list[TestTypingEntryCreate]
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class TestVocabularyCreate(BaseModel):
        content: str
    
    
    
    class CalComWebhook(BaseModel):
        triggerEvent: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        createdAt: NaiveDatetime
    
        payload: dict
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class SurveyQuestionCreate(BaseModel):
    
        id: int | None = None
        question: str
        correct: int
        option1: str | None = None
        option2: str | None = None
        option3: str | None = None
        option4: str | None = None
        option5: str | None = None
        option6: str | None = None
        option7: str | None = None
        option8: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class SurveyQuestion(BaseModel):
        id: int
    
        question: str
        correct: int
        option1: str | None = None
        option2: str | None = None
        option3: str | None = None
        option4: str | None = None
        option5: str | None = None
        option6: str | None = None
        option7: str | None = None
        option8: str | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class SurveyGroupCreate(BaseModel):
    
        id: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        title: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        demo: bool
    
        questions: list[SurveyQuestionCreate] = []
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class SurveyGroup(BaseModel):
        id: int
        title: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        demo: bool
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        questions: list[SurveyQuestion]
    
    
    
    class SurveyGroupAddQuestion(BaseModel):
        question_id: int
    
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    class SurveyCreate(BaseModel):
    
        id: int | None = None
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        title: str
    
        groups: list[SurveyGroupCreate] = []
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    
    class Survey(BaseModel):
        id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        groups: list[SurveyGroup]
    
    class SurveySurveyAddGroup(BaseModel):
        group_id: int
    
    
    
    class SurveyResponseCreate(BaseModel):
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        sid: str
    
        survey_id: int
        group_id: int
    
        question_id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        selected_id: int
    
        response_time: float
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        text: str | None = None
    
    
    
    class SurveyResponse(BaseModel):
        id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        sid: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        created_at: NaiveDatetime
    
        survey_id: int
        group_id: int
    
        question_id: int
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        selected_id: int
    
        response_time: float
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        text: str | None = None
    
    class SurveyResponseInfoCreate(BaseModel):
        sid: str
        birthyear: int
        gender: str
        primary_language: str
        education: str
    
    
    class SurveyResponseInfo(BaseModel):
        id: int
        sid: str
        birthyear: int
        gender: str
        primary_language: str
        education: str
    
    
    
    class Study(BaseModel):
        id: int
        title: str
        description: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        start_date: NaiveDatetime
        end_date: NaiveDatetime
    
        chat_duration: int
    
    
    class StudyCreate(BaseModel):
        title: str
        description: str
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
        start_date: NaiveDatetime
        end_date: NaiveDatetime
    
        chat_duration: int = 30 * 60