connected ui cart with db
parent
3f3c13abd0
commit
451fe6b2fa
|
|
@ -5,10 +5,11 @@
|
|||
{% block content %}
|
||||
<h2>Cart Items</h2>
|
||||
<ul>
|
||||
{% for item in cart_items %}
|
||||
<li>{{ item.name }} - {{ item.quantity }}</li>
|
||||
{% for item in cart_items['items'] %}
|
||||
<li>Product ID: {{ item.product_id }} - Quantity: {{ item.quantity }} - Price: ${{ item.price }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p>Total Price: ${{ cart_items.total_price }}</p>
|
||||
|
||||
<a href="{{ url_for('ui') }}" class="btn btn-primary">Back to the prodcuts</a>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,24 @@
|
|||
#python imports
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
|
||||
import httpx
|
||||
|
||||
#dependency imports
|
||||
from use_cases.view_cart import ViewCart
|
||||
from interface_adapters.dtos.view_cart_response import ViewCartResponseDTO, CartItemDTO
|
||||
from interface_adapters.dtos.view_cart_request import ViewCartRequestDTO
|
||||
from interface_adapters.repositories.cart_repository import CartRepository
|
||||
|
||||
#from interface_adapters.mocks.cart_db import CartDatabase
|
||||
from framework_driver.db.db_cart import CartDatabase
|
||||
|
||||
# Set up templates
|
||||
templates = Jinja2Templates(directory="framework_driver/ui/templates")
|
||||
|
||||
# Initialize components
|
||||
cart_database = CartDatabase() # Concrete database implementation
|
||||
cart_repository = CartRepository(cart_database) # Repository depends on gateway
|
||||
|
|
@ -29,4 +39,16 @@ async def view_cart(request_dto: ViewCartRequestDTO):
|
|||
total_price=sum(item.price * item.quantity for item in cart.items)
|
||||
)
|
||||
|
||||
return response_dto
|
||||
return response_dto
|
||||
|
||||
|
||||
@router.get("/ui/view_cart", response_class=HTMLResponse, name="ui_view_cart")
|
||||
async def ui_view_cart(request: Request, user_id: int=1):
|
||||
request_dto = {"user_id": user_id}
|
||||
async with httpx.AsyncClient() as client:
|
||||
response = await client.post("http://127.0.0.1:8000/view_cart", json=request_dto)
|
||||
response.raise_for_status() # Raise an exception for HTTP errors
|
||||
response_dto = response.json()
|
||||
|
||||
return templates.TemplateResponse("cart.html", {"request": request, "cart_items": response_dto})
|
||||
|
||||
|
|
|
|||
14
src/main.py
14
src/main.py
|
|
@ -51,17 +51,3 @@ async def ui(request: Request):
|
|||
{"id": 2, "name": "Product 2", "price": 20.0}
|
||||
]
|
||||
return templates.TemplateResponse("products.html", {"request": request, "products": products})
|
||||
|
||||
@app.get("/ui/view_cart", response_class=HTMLResponse, name="ui_view_cart")
|
||||
async def ui_view_cart(request: Request):
|
||||
# Dummy cart data for demonstration
|
||||
cart_items = [
|
||||
{"product_id": 1, "name": "Product 1", "quantity": 2},
|
||||
{"product_id": 2, "name": "Product 2", "quantity": 1}
|
||||
]
|
||||
|
||||
return templates.TemplateResponse("cart.html", {"request": request, "cart_items": cart_items})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="127.0.0.1", port=8000)
|
||||
Loading…
Reference in New Issue