Spaces:
Sleeping
Sleeping
| from src.profile.models import UserDevices | |
| from src.notifications.schemas import RegisterDeviceRequest | |
| from sqlalchemy.ext.asyncio import AsyncSession | |
| from sqlalchemy import select | |
| from datetime import datetime | |
| async def register_device( | |
| user_id: str, body: RegisterDeviceRequest, session: AsyncSession | |
| ): | |
| # Check if the user already has this token saved | |
| stmt = select(UserDevices).where( | |
| UserDevices.user_id == user_id, | |
| UserDevices.device_token == body.device_token, | |
| ) | |
| result = await session.execute(stmt) | |
| device = result.scalar_one_or_none() | |
| if device: | |
| device.last_seen = datetime.utcnow() | |
| device.updated_at = datetime.utcnow() | |
| await session.commit() | |
| await session.refresh(device) | |
| return device | |
| # Create new device entry | |
| new_device = UserDevices( | |
| user_id=user_id, | |
| device_token=body.device_token, | |
| ) | |
| session.add(new_device) | |
| await session.commit() | |
| await session.refresh(new_device) | |
| return new_device | |
| from sqlalchemy import select | |
| from src.profile.models import UserDevices | |
| async def get_user_device_tokens(session, user_id): | |
| stmt = select(UserDevices.device_token).where(UserDevices.user_id == user_id) | |
| rows = (await session.execute(stmt)).all() | |
| return [r[0] for r in rows] | |