
- Complete FastAPI application with authentication and JWT tokens - SQLite database with SQLAlchemy ORM and Alembic migrations - User management with profile features and search functionality - LinkedIn-style networking with connection requests and acceptance - Social features: posts, likes, comments, announcements, prayer requests - Event management with registration system and capacity limits - RESTful API endpoints for all features with proper authorization - Comprehensive documentation and setup instructions Key Features: - JWT-based authentication with bcrypt password hashing - User profiles with bio, position, contact information - Connection system for church member networking - Community feed with post interactions - Event creation, registration, and attendance tracking - Admin role-based permissions - Health check endpoint and API documentation Environment Variables Required: - SECRET_KEY: JWT secret key for token generation
55 lines
1.2 KiB
Python
55 lines
1.2 KiB
Python
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
|
|
class EventBase(BaseModel):
|
|
title: str
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
start_date: datetime
|
|
end_date: Optional[datetime] = None
|
|
max_attendees: Optional[int] = None
|
|
is_public: bool = True
|
|
image_url: Optional[str] = None
|
|
|
|
|
|
class EventCreate(EventBase):
|
|
pass
|
|
|
|
|
|
class EventUpdate(BaseModel):
|
|
title: Optional[str] = None
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
start_date: Optional[datetime] = None
|
|
end_date: Optional[datetime] = None
|
|
max_attendees: Optional[int] = None
|
|
is_public: Optional[bool] = None
|
|
image_url: Optional[str] = None
|
|
|
|
|
|
class EventResponse(EventBase):
|
|
id: int
|
|
created_by: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
creator_name: Optional[str] = None
|
|
registered_count: int = 0
|
|
is_registered: bool = False
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class EventRegistrationResponse(BaseModel):
|
|
id: int
|
|
event_id: int
|
|
user_id: int
|
|
status: str
|
|
registered_at: datetime
|
|
user_name: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|