diff --git a/backend/app/routers/instances.py b/backend/app/routers/instances.py new file mode 100644 index 0000000..8c44860 --- /dev/null +++ b/backend/app/routers/instances.py @@ -0,0 +1,24 @@ +from fastapi import APIRouter, Depends +from sqlalchemy import select +from sqlalchemy.orm import Session + +from .. import models, schemas +from ..database import get_db +from ..deps import get_current_user + +router = APIRouter(prefix="/instances", tags=["instances"]) + + +@router.get("", response_model=list[schemas.InstanceOut]) +def list_instances( + db: Session = Depends(get_db), + user: models.User = Depends(get_current_user), +): + """Клиент видит только свои инстансы, администратор — все.""" + query = select(models.Instance).where( + models.Instance.status != models.InstanceStatus.deleted + ) + if user.role != models.UserRole.admin: + query = query.where(models.Instance.owner_id == user.id) + query = query.order_by(models.Instance.created_at.desc()) + return list(db.scalars(query))