from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from typing import List from app.database import get_db from app import models, schemas from app.utils.security import get_current_user router = APIRouter(prefix="/projects", tags=["Projects"]) @router.get("/recent", response_model=List[schemas.ProjectResponse]) async def get_recent_projects( current_user: models.User = Depends(get_current_user), db: AsyncSession = Depends(get_db) ): result = await db.execute( select(models.Project) .where(models.Project.user_id == current_user.id) .order_by(models.Project.created_at.desc()) .limit(6) ) return result.scalars().all() @router.get("/all", response_model=List[schemas.ProjectResponse]) async def get_all_projects( page: int = Query(1, ge=1), limit: int = Query(20, ge=1, le=100), current_user: models.User = Depends(get_current_user), db: AsyncSession = Depends(get_db) ): offset = (page - 1) * limit result = await db.execute( select(models.Project) .where(models.Project.user_id == current_user.id) .order_by(models.Project.created_at.desc()) .offset(offset) .limit(limit) ) return result.scalars().all()