| 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() |
|
|