nex_basse/backend/app/schemas/meeting.py

68 lines
1.4 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
class MeetingBase(BaseModel):
title: str = Field(..., max_length=255)
tags: Optional[str] = None
meeting_time: Optional[datetime] = None
status: str = "draft"
class MeetingCreate(MeetingBase):
pass
class MeetingUpdate(BaseModel):
title: Optional[str] = None
tags: Optional[str] = None
status: Optional[str] = None
summary: Optional[str] = None
class AttendeeOut(BaseModel):
attendee_id: int
user_id: Optional[int]
display_name: Optional[str] = None
avatar: Optional[str] = None
class Config:
from_attributes = True
class MeetingOut(MeetingBase):
meeting_id: int
user_id: Optional[int]
creator_name: Optional[str] = None
creator_avatar: Optional[str] = None
summary: Optional[str] = None
created_at: datetime
updated_at: datetime
attendees: List[AttendeeOut] = []
class Config:
from_attributes = True
class TranscriptSegmentOut(BaseModel):
segment_id: int
speaker_id: Optional[int]
speaker_tag: Optional[str]
start_time_ms: int
end_time_ms: int
text_content: str
class Config:
from_attributes = True
class MeetingDetailOut(MeetingOut):
segments: List[TranscriptSegmentOut] = []
# Add other details like audio list if needed
class MeetingListOut(BaseModel):
items: List[MeetingOut]
total: int