Step F2:项目列表 & 当前项目上下文

This commit is contained in:
Cheng Zhou
2025-12-16 20:31:20 +08:00
parent 78d13d077c
commit cc54d80b3a
19 changed files with 239 additions and 24 deletions
+7 -3
View File
@@ -5,7 +5,9 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.core.deps import get_current_user, get_db_session, require_roles, require_study_member, require_study_roles
from app.crud import study as study_crud
from app.schemas.common import PaginatedResponse
from app.schemas.study import StudyCreate, StudyRead, StudyUpdate
from app.utils.pagination import paginate
router = APIRouter()
@@ -23,18 +25,20 @@ async def create_study(
return study
@router.get("/", response_model=list[StudyRead])
@router.get("/", response_model=PaginatedResponse[StudyRead])
async def list_studies(
skip: int = 0,
limit: int = 100,
db: AsyncSession = Depends(get_db_session),
current_user=Depends(get_current_user),
) -> list[StudyRead]:
) -> PaginatedResponse[StudyRead]:
if current_user.role == "ADMIN":
studies = await study_crud.list_studies(db, skip=skip, limit=limit)
total = await study_crud.list_studies(db, skip=0, limit=10_000_000)
else:
studies = await study_crud.list_studies_for_user(db, current_user.id, skip=skip, limit=limit)
return list(studies)
total = await study_crud.list_studies_for_user(db, current_user.id, skip=0, limit=10_000_000)
return paginate(list(studies), total=len(total))
@router.get("/{study_id}", response_model=StudyRead, dependencies=[Depends(require_study_member())])