from typing import List, Optional from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from datetime import date from app.api.deps import get_db, get_current_read_user from app.crud.crud_movement import movement as crud_movement from app.schemas.movement import Movement from app.models.ppr import User from app.models.movement import MovementType router = APIRouter() @router.get("/", response_model=List[Movement]) async def get_movements( skip: int = 0, limit: int = 100, movement_type: Optional[MovementType] = None, aircraft_registration: Optional[str] = None, date_from: Optional[date] = None, date_to: Optional[date] = None, entity_type: Optional[str] = None, db: Session = Depends(get_db), current_user: User = Depends(get_current_read_user) ): """Get movement records with optional filtering""" movements = crud_movement.get_multi( db, skip=skip, limit=limit, movement_type=movement_type, aircraft_registration=aircraft_registration, date_from=date_from, date_to=date_to, entity_type=entity_type ) return movements @router.get("/{movement_id}", response_model=Movement) async def get_movement( movement_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_read_user) ): """Get a specific movement record""" movement = crud_movement.get(db, movement_id=movement_id) if not movement: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Movement record not found" ) return movement