Automated Action 43235eb604 Create TechDating API backend
- 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
2025-05-28 15:17:44 +00:00

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)