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

100 lines
2.2 KiB
Python

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