2025-07-01 12:54:48 +00:00

104 lines
2.3 KiB
Python

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