from datetime import datetime from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.database import get_db from app.models.db_models import Device from app.models.schemas import DeviceRegister, DeviceResponse router = APIRouter(prefix="/devices", tags=["devices"]) @router.post("/register", response_model=DeviceResponse) def register_device(body: DeviceRegister, db: Session = Depends(get_db)): """Register or refresh an APNs device token.""" device = db.query(Device).filter(Device.apns_token == body.apns_token).first() if device: device.device_name = body.device_name or device.device_name device.last_seen = datetime.utcnow() else: device = Device( apns_token=body.apns_token, device_name=body.device_name, ) db.add(device) db.commit() db.refresh(device) return device