Chepuhagram/srv/app/api/endpoints/messages.py

52 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import Depends, APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.db import models
from app.core.security import get_current_user
from app.api import schemas
from fastapi.encoders import jsonable_encoder
# бд
def get_db():
db = models.SessionLocal()
try:
yield db
finally:
db.close()
messagesRouter = APIRouter(
prefix="/messages",
tags=[],
)
@messagesRouter.get("/history/{contact_id}")
async def get_chat_history(
contact_id: int,
current_user: models.User = Depends(get_current_user),
db: Session = Depends(get_db),
limit: int = 50
):
messages = db.query(models.Message).filter(
(models.Message.sender_id == current_user.id) & (models.Message.receiver_id == contact_id) |
(models.Message.sender_id == contact_id) & (models.Message.receiver_id == current_user.id)
).order_by(models.Message.timestamp.desc()).limit(limit).all()
return jsonable_encoder(messages)
@messagesRouter.delete("/all")
async def delete_all_messages(
current_user: models.User = Depends(get_current_user),
db: Session = Depends(get_db),
):
"""Удалить все сообщения пользователя"""
# Удаляем все сообщения, где пользователь либо отправитель, либо получатель
db.query(models.Message).filter(
(models.Message.sender_id == current_user.id) | (models.Message.receiver_id == current_user.id)
).delete()
db.commit()
return {"status": "ok", "detail": "Все сообщения удалены"}