from pydantic import BaseModel from datetime import datetime from typing import Optional from app.models.ministry import MinistryRole class MinistryBase(BaseModel): name: str description: Optional[str] = None vision: Optional[str] = None mission: Optional[str] = None meeting_day: Optional[str] = None meeting_time: Optional[str] = None meeting_location: Optional[str] = None class MinistryCreate(MinistryBase): pass class MinistryUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None vision: Optional[str] = None mission: Optional[str] = None meeting_day: Optional[str] = None meeting_time: Optional[str] = None meeting_location: Optional[str] = None class MinistryResponse(MinistryBase): id: int leader_id: int is_active: bool created_at: datetime updated_at: datetime leader_name: Optional[str] = None member_count: int = 0 is_member: bool = False user_role: Optional[MinistryRole] = None class Config: from_attributes = True class MinistryMemberResponse(BaseModel): id: int ministry_id: int user_id: int role: MinistryRole joined_at: datetime is_active: bool user_name: Optional[str] = None ministry_name: Optional[str] = None class Config: from_attributes = True class MinistryActivityBase(BaseModel): title: str description: Optional[str] = None activity_date: datetime location: Optional[str] = None class MinistryActivityCreate(MinistryActivityBase): pass class MinistryActivityResponse(MinistryActivityBase): id: int ministry_id: int created_by: int created_at: datetime creator_name: Optional[str] = None class Config: from_attributes = True class MinistryJoinRequest(BaseModel): message: Optional[str] = None class MinistryRequestResponse(BaseModel): id: int ministry_id: int user_id: int message: Optional[str] = None status: str requested_at: datetime responded_at: Optional[datetime] = None responded_by: Optional[int] = None user_name: Optional[str] = None ministry_name: Optional[str] = None class Config: from_attributes = True