Files
Messenger/app/media/router.py
benya 6a96a99775
Some checks failed
CI / test (push) Failing after 21s
feat(web): improve message UX, voice gestures, and attachments
2026-03-08 10:20:52 +03:00

45 lines
1.5 KiB
Python

from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.auth.service import get_current_user
from app.database.session import get_db
from app.media.schemas import AttachmentCreateRequest, AttachmentRead, ChatAttachmentRead, UploadUrlRequest, UploadUrlResponse
from app.media.service import generate_upload_url, list_attachments_for_chat, store_attachment_metadata
from app.users.models import User
router = APIRouter(prefix="/media", tags=["media"])
@router.post("/upload-url", response_model=UploadUrlResponse)
async def create_upload_url(
payload: UploadUrlRequest,
_current_user: User = Depends(get_current_user),
) -> UploadUrlResponse:
return await generate_upload_url(payload)
@router.post("/attachments", response_model=AttachmentRead)
async def create_attachment_metadata(
payload: AttachmentCreateRequest,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> AttachmentRead:
return await store_attachment_metadata(db, user_id=current_user.id, payload=payload)
@router.get("/chats/{chat_id}/attachments", response_model=list[ChatAttachmentRead])
async def list_chat_attachments_endpoint(
chat_id: int,
limit: int = 100,
before_id: int | None = None,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> list[ChatAttachmentRead]:
return await list_attachments_for_chat(
db,
user_id=current_user.id,
chat_id=chat_id,
limit=limit,
before_id=before_id,
)