from pydantic import BaseModel from datetime import datetime from typing import Optional, List from app.models.prayer import PrayerPrivacyLevel, PrayerStatus, PrayerCategory class PrayerRequestBase(BaseModel): title: str description: str category: PrayerCategory = PrayerCategory.OTHER privacy_level: PrayerPrivacyLevel = PrayerPrivacyLevel.PUBLIC ministry_id: Optional[int] = None is_anonymous: bool = False class PrayerRequestCreate(PrayerRequestBase): pass class PrayerRequestUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None category: Optional[PrayerCategory] = None privacy_level: Optional[PrayerPrivacyLevel] = None status: Optional[PrayerStatus] = None answer_description: Optional[str] = None class PrayerRequestResponse(PrayerRequestBase): id: int requester_id: int status: PrayerStatus answer_description: Optional[str] = None answered_at: Optional[datetime] = None created_at: datetime updated_at: datetime requester_name: Optional[str] = None ministry_name: Optional[str] = None prayer_count: int = 0 has_prayed: bool = False class Config: from_attributes = True class PrayerBase(BaseModel): message: Optional[str] = None class PrayerCreate(PrayerBase): pass class PrayerResponse(PrayerBase): id: int prayer_request_id: int prayer_warrior_id: int prayed_at: datetime prayer_warrior_name: Optional[str] = None class Config: from_attributes = True class PrayerGroupBase(BaseModel): name: str description: Optional[str] = None class PrayerGroupCreate(PrayerGroupBase): member_ids: List[int] = [] class PrayerGroupResponse(PrayerGroupBase): id: int leader_id: int is_active: bool created_at: datetime leader_name: Optional[str] = None member_count: int = 0 is_member: bool = False class Config: from_attributes = True class PrayerGroupMemberResponse(BaseModel): id: int prayer_group_id: int user_id: int joined_at: datetime user_name: Optional[str] = None class Config: from_attributes = True class PrayerStats(BaseModel): total_requests: int active_requests: int answered_requests: int prayers_offered: int requests_created: int