
- Setup project structure and basic FastAPI application - Define database models for users, profiles, matches, and messages - Set up database connection and create Alembic migrations - Implement user authentication and registration endpoints - Create API endpoints for profile management, matches, and messaging - Add filtering and search functionality for tech profiles - Setup environment variable configuration - Create README with project information and setup instructions
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from typing import List
|
|
from sqlalchemy.orm import Session
|
|
from sqlalchemy import or_
|
|
|
|
from app.crud.base import CRUDBase
|
|
from app.models.message import Message
|
|
from app.schemas.message import MessageCreate, MessageUpdate
|
|
|
|
|
|
class CRUDMessage(CRUDBase[Message, MessageCreate, MessageUpdate]):
|
|
def get_by_match(
|
|
self, db: Session, *, match_id: int, skip: int = 0, limit: int = 100
|
|
) -> List[Message]:
|
|
return db.query(Message).filter(
|
|
Message.match_id == match_id
|
|
).order_by(Message.created_at).offset(skip).limit(limit).all()
|
|
|
|
def get_user_messages(
|
|
self, db: Session, *, user_id: int, skip: int = 0, limit: int = 100
|
|
) -> List[Message]:
|
|
return db.query(Message).filter(
|
|
or_(
|
|
Message.sender_id == user_id,
|
|
Message.receiver_id == user_id
|
|
)
|
|
).order_by(Message.created_at.desc()).offset(skip).limit(limit).all()
|
|
|
|
def mark_as_read(
|
|
self, db: Session, *, user_id: int, match_id: int
|
|
) -> int:
|
|
messages = db.query(Message).filter(
|
|
Message.match_id == match_id,
|
|
Message.receiver_id == user_id,
|
|
not Message.is_read
|
|
).all()
|
|
|
|
count = 0
|
|
for message in messages:
|
|
message.is_read = True
|
|
count += 1
|
|
|
|
if count:
|
|
db.commit()
|
|
|
|
return count
|
|
|
|
|
|
message = CRUDMessage(Message) |