feat(): push notifications via firebase admin

This commit is contained in:
doas root
2025-11-20 21:25:48 +03:00
parent c010984d64
commit fa24f4060f
22 changed files with 706 additions and 3 deletions
@@ -0,0 +1,31 @@
from dishka import FromDishka
from dishka.integrations.fastapi import DishkaRoute
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import HTTPBearer
from pydantic import BaseModel
from template_project.application.user.notification.interactors.send_notification import (
NotificationInteractor,
SendNotificationRequest,
)
from template_project.application.user.notification_device.errors import NotificationDeviceNotFoundError
security = HTTPBearer()
router = APIRouter(route_class=DishkaRoute, tags=["Notifications"], dependencies=[Depends(security)])
class SendNotificationRequestModel(BaseModel):
title: str
body: str
@router.post("/notifications/send")
async def send_notification(
request: SendNotificationRequestModel,
interactor: FromDishka[NotificationInteractor],
) -> None:
try:
notification_request = SendNotificationRequest(title=request.title, body=request.body)
await interactor.send_notification(notification_request)
except NotificationDeviceNotFoundError as error:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Notification device not found") from error