104 lines
2.3 KiB
Python
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
|