connected ui cart with db
parent
3f3c13abd0
commit
451fe6b2fa
|
|
@ -5,10 +5,11 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Cart Items</h2>
|
<h2>Cart Items</h2>
|
||||||
<ul>
|
<ul>
|
||||||
{% for item in cart_items %}
|
{% for item in cart_items['items'] %}
|
||||||
<li>{{ item.name }} - {{ item.quantity }}</li>
|
<li>Product ID: {{ item.product_id }} - Quantity: {{ item.quantity }} - Price: ${{ item.price }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
<p>Total Price: ${{ cart_items.total_price }}</p>
|
||||||
|
|
||||||
<a href="{{ url_for('ui') }}" class="btn btn-primary">Back to the prodcuts</a>
|
<a href="{{ url_for('ui') }}" class="btn btn-primary">Back to the prodcuts</a>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,24 @@
|
||||||
#python imports
|
#python imports
|
||||||
from fastapi import APIRouter, HTTPException
|
from fastapi import APIRouter, HTTPException
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
|
from fastapi import FastAPI, Request
|
||||||
|
from fastapi.responses import HTMLResponse
|
||||||
|
from fastapi.templating import Jinja2Templates
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
|
||||||
#dependency imports
|
#dependency imports
|
||||||
from use_cases.view_cart import ViewCart
|
from use_cases.view_cart import ViewCart
|
||||||
from interface_adapters.dtos.view_cart_response import ViewCartResponseDTO, CartItemDTO
|
from interface_adapters.dtos.view_cart_response import ViewCartResponseDTO, CartItemDTO
|
||||||
from interface_adapters.dtos.view_cart_request import ViewCartRequestDTO
|
from interface_adapters.dtos.view_cart_request import ViewCartRequestDTO
|
||||||
from interface_adapters.repositories.cart_repository import CartRepository
|
from interface_adapters.repositories.cart_repository import CartRepository
|
||||||
|
|
||||||
#from interface_adapters.mocks.cart_db import CartDatabase
|
#from interface_adapters.mocks.cart_db import CartDatabase
|
||||||
from framework_driver.db.db_cart import CartDatabase
|
from framework_driver.db.db_cart import CartDatabase
|
||||||
|
|
||||||
|
# Set up templates
|
||||||
|
templates = Jinja2Templates(directory="framework_driver/ui/templates")
|
||||||
|
|
||||||
# Initialize components
|
# Initialize components
|
||||||
cart_database = CartDatabase() # Concrete database implementation
|
cart_database = CartDatabase() # Concrete database implementation
|
||||||
cart_repository = CartRepository(cart_database) # Repository depends on gateway
|
cart_repository = CartRepository(cart_database) # Repository depends on gateway
|
||||||
|
|
@ -30,3 +40,15 @@ async def view_cart(request_dto: ViewCartRequestDTO):
|
||||||
)
|
)
|
||||||
|
|
||||||
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}
|
{"id": 2, "name": "Product 2", "price": 20.0}
|
||||||
]
|
]
|
||||||
return templates.TemplateResponse("products.html", {"request": request, "products": products})
|
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