Commit 73acfaa5 by Ooh-Ao

ยืม

parent fafe75a4
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: FastAPI",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"args": [
"main:app",
"--reload"
],
"jinja": true
}
]
}
\ No newline at end of file
# myproject/controllers/borrow_controller.py # myproject/controllers/borrow_controller.py
from typing import List, Optional
from uuid import UUID from uuid import UUID
from datetime import datetime from datetime import datetime
from fastapi import HTTPException from fastapi import HTTPException
...@@ -174,3 +175,32 @@ async def delete_borrow_transaction(db: AsyncSession, borrow_id: UUID): ...@@ -174,3 +175,32 @@ async def delete_borrow_transaction(db: AsyncSession, borrow_id: UUID):
raise HTTPException(status_code=400, detail=str(e.orig)) raise HTTPException(status_code=400, detail=str(e.orig))
return {"message": "BorrowTransaction deleted"} return {"message": "BorrowTransaction deleted"}
# NEW API: Search BorrowTransactions by query parameters
async def search_borrow_transactions(
db: AsyncSession,
member_id: Optional[UUID] = None,
peId: Optional[UUID] = None,
status: Optional[str] = None,
date_from: Optional[datetime] = None,
date_to: Optional[datetime] = None
) -> List[BorrowTransaction]:
"""
ค้นหา BorrowTransaction โดยสามารถกรองตาม:
- member_id: รหัสสมาชิกที่เบิกอุปกรณ์
- status: สถานะของการเบิก (requested, approved, returned, rejected, etc.)
- date_from และ date_to: ช่วงวันของ created_at
"""
query = select(BorrowTransaction)
if member_id:
query = query.where(BorrowTransaction.memberId == member_id)
if peId:
query = query.where(BorrowTransaction.peId == peId)
if status:
query = query.where(BorrowTransaction.status == status)
if date_from:
query = query.where(BorrowTransaction.created_at >= date_from)
if date_to:
query = query.where(BorrowTransaction.created_at <= date_to)
result = await db.execute(query)
return result.scalars().all()
\ No newline at end of file
# myproject/routes/borrow_routes.py # myproject/routes/borrow_routes.py
from datetime import datetime
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from typing import List from typing import List, Optional
from uuid import UUID from uuid import UUID
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
...@@ -11,7 +12,8 @@ from ..controllers.borrow_controller import ( ...@@ -11,7 +12,8 @@ from ..controllers.borrow_controller import (
update_borrow_transaction, update_borrow_transaction,
get_all_borrow_transactions, get_all_borrow_transactions,
get_borrow_transaction_by_id, get_borrow_transaction_by_id,
delete_borrow_transaction delete_borrow_transaction,
search_borrow_transactions
) )
from ..schemas.borrow_schema import ( from ..schemas.borrow_schema import (
BorrowTransactionBase, BorrowTransactionBase,
...@@ -62,3 +64,16 @@ async def delete_borrow_endpoint( ...@@ -62,3 +64,16 @@ async def delete_borrow_endpoint(
db: AsyncSession = Depends(get_db) db: AsyncSession = Depends(get_db)
): ):
return await delete_borrow_transaction(db, borrowId) return await delete_borrow_transaction(db, borrowId)
# NEW API: Search BorrowTransactions by query parameters
@router.get("/search/borrow", response_model=List[BorrowTransactionResponse])
async def search_borrow_endpoint(
member_id: Optional[UUID] = None,
peId: Optional[UUID] = None,
status: Optional[str] = None,
date_from: Optional[datetime] = None,
date_to: Optional[datetime] = None,
db: AsyncSession = Depends(get_db)
):
results = await search_borrow_transactions(db, member_id,peId, status, date_from, date_to)
return results
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment