59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
|
|
from pydantic import BaseModel, EmailStr
|
|
from typing import Optional, Union, List
|
|
import datetime
|
|
|
|
class LoginRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
class LoginResponse(BaseModel):
|
|
user_id: int
|
|
username: str
|
|
caption: str
|
|
email: EmailStr
|
|
token: str
|
|
|
|
class UserInfo(BaseModel):
|
|
user_id: int
|
|
username: str
|
|
caption: str
|
|
email: EmailStr
|
|
created_at: datetime.datetime
|
|
meetings_created: int
|
|
meetings_attended: int
|
|
|
|
class AttendeeInfo(BaseModel):
|
|
user_id: int
|
|
caption: str
|
|
|
|
class Meeting(BaseModel):
|
|
meeting_id: int
|
|
title: str
|
|
meeting_time: Optional[datetime.datetime]
|
|
summary: Optional[str]
|
|
created_at: datetime.datetime
|
|
attendees: Union[List[str], List[AttendeeInfo]] # Support both formats
|
|
creator_id: int
|
|
creator_username: str
|
|
audio_file_path: Optional[str] = None
|
|
|
|
class TranscriptSegment(BaseModel):
|
|
segment_id: int
|
|
meeting_id: int
|
|
speaker_tag: str
|
|
start_time_ms: int
|
|
end_time_ms: int
|
|
text_content: str
|
|
|
|
class CreateMeetingRequest(BaseModel):
|
|
title: str
|
|
meeting_time: Optional[datetime.datetime]
|
|
attendee_ids: list[int]
|
|
|
|
class UpdateMeetingRequest(BaseModel):
|
|
title: str
|
|
meeting_time: Optional[datetime.datetime]
|
|
summary: Optional[str]
|
|
attendee_ids: list[int]
|