"""Event endpoints.""" from datetime import datetime, timedelta, UTC from flask import request from . import bp, paginate from ..models import Event from ..extensions import db @bp.route('/events') def list_events(): """List sensor events.""" event_type = request.args.get('type') sensor_id = request.args.get('sensor_id', type=int) hours = request.args.get('hours', 24, type=int) since = datetime.now(UTC) - timedelta(hours=hours) query = db.select(Event).where(Event.timestamp >= since).order_by(Event.timestamp.desc()) if event_type: query = query.where(Event.event_type == event_type) if sensor_id: query = query.where(Event.sensor_id == sensor_id) result = paginate(query, Event.to_dict) return {'events': result['items'], 'total': result['total'], 'limit': result['limit'], 'offset': result['offset']}