From 7d56f653db2c92e23992f61e63538eb4bdf3eaaf Mon Sep 17 00:00:00 2001 From: nana Date: Sun, 3 Dec 2023 17:20:44 +0900 Subject: [PATCH 1/4] feat: add bid price route --- app/api/routes/bid_prices.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 app/api/routes/bid_prices.py diff --git a/app/api/routes/bid_prices.py b/app/api/routes/bid_prices.py new file mode 100644 index 0000000..a4b5d52 --- /dev/null +++ b/app/api/routes/bid_prices.py @@ -0,0 +1,32 @@ +from typing import Any, List +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from app.api.dependencies import database +from app.crud.crud_bid_prices import bid +from app.models.domain.bid_prices import BidPrice +from app.services.user_manager import current_active_user +from app.crud.crud_users import get_user_by_email +from app.db.fastapi_user import User + +router = APIRouter() + + +@router.put("/{post_id}", description="경매 게시글의 경매 가격을 제시합니다.") +def bid_for_item( + *, + db: Session = Depends(database.get_db), + current_user: User = Depends(current_active_user), + post_id: int, + bid_price: BidPrice, +) -> Any: + current_user_name = get_user_by_email(db=db, email=current_user.email).username + + # market price update + market = bid(db=db, post_id=post_id, bid_price=bid_price.bid_price) + if market: + return {"message": f"{current_user_name} successfully placed a bid"} + else: + raise HTTPException( + status_code=400, + detail="Bid price must be higher than current price", + ) From 4f2cca33f859757a3aa3048ad163fa2b6c0ec42e Mon Sep 17 00:00:00 2001 From: nana Date: Sun, 3 Dec 2023 17:21:07 +0900 Subject: [PATCH 2/4] feat: add bid price route --- app/api/routes/api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/api/routes/api.py b/app/api/routes/api.py index bd3bd81..f745ffa 100644 --- a/app/api/routes/api.py +++ b/app/api/routes/api.py @@ -8,6 +8,7 @@ from app.api.routes import messages from app.api.routes import likes from app.api.routes import reports +from app.api.routes import bid_prices router = APIRouter() router.include_router(users.router, tags=["users"], prefix="/user") @@ -18,3 +19,4 @@ router.include_router(messages.router, tags=["messages"], prefix="/message") router.include_router(likes.router, tags=["likes"], prefix="/like") router.include_router(reports.router, tags=["reports"], prefix="/report") +router.include_router(bid_prices.router, tags=["bid_prices"], prefix="/bid") From ba7495f88bb2ed37e4d17b99e0a0926b4a3ca0d7 Mon Sep 17 00:00:00 2001 From: nana Date: Sun, 3 Dec 2023 17:21:37 +0900 Subject: [PATCH 3/4] feat: add bid price function --- app/crud/crud_bid_prices.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 app/crud/crud_bid_prices.py diff --git a/app/crud/crud_bid_prices.py b/app/crud/crud_bid_prices.py new file mode 100644 index 0000000..e723d77 --- /dev/null +++ b/app/crud/crud_bid_prices.py @@ -0,0 +1,15 @@ +from sqlalchemy.orm import Session +from app.models.schemas.markets import Market + + +def bid(db: Session, *, post_id: int, bid_price: int) -> Market: + market = db.query(Market).filter(Market.post_id == post_id).one() + + if bid_price > market.price: + market.price = bid_price + db.add(market) + db.commit() + db.refresh(market) + return market + + return None From 654176157123efd83a1f512ee267f76e0414b6ab Mon Sep 17 00:00:00 2001 From: nana Date: Sun, 3 Dec 2023 17:22:02 +0900 Subject: [PATCH 4/4] feat: add bid price Pydantic Model --- app/models/domain/bid_prices.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/models/domain/bid_prices.py diff --git a/app/models/domain/bid_prices.py b/app/models/domain/bid_prices.py new file mode 100644 index 0000000..040fde2 --- /dev/null +++ b/app/models/domain/bid_prices.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + + +class BidPrice(BaseModel): + bid_price: int