fix demo session 1

This commit is contained in:
Urtzi Alfaro
2026-01-02 11:12:50 +01:00
parent 507031deaf
commit cf0176673c
15 changed files with 136 additions and 107 deletions

View File

@@ -5,6 +5,7 @@ Handles internal demo data cloning operations
from fastapi import APIRouter, Depends, HTTPException, Header
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, delete
from typing import Optional
import structlog
import json
@@ -19,7 +20,7 @@ from app.models import Ingredient, Stock, ProductType
from shared.utils.demo_dates import adjust_date_for_demo, resolve_time_marker, calculate_edge_case_times
logger = structlog.get_logger()
router = APIRouter()
router = APIRouter(prefix="/internal/demo", tags=["internal"])
async def verify_internal_api_key(x_internal_api_key: str = Header(None)):
@@ -77,7 +78,7 @@ def parse_date_field(date_value, session_time: datetime, field_name: str = "date
return None
@router.post("/internal/demo/clone")
@router.post("/clone")
async def clone_demo_data_internal(
base_tenant_id: str,
virtual_tenant_id: str,
@@ -183,7 +184,6 @@ async def clone_demo_data_internal(
seed_data = json.load(f)
# Check if data already exists for this virtual tenant (idempotency)
from sqlalchemy import select, delete
existing_check = await db.execute(
select(Ingredient).where(Ingredient.tenant_id == virtual_tenant_id).limit(1)
)
@@ -547,30 +547,40 @@ async def delete_demo_tenant_data(
"""
start_time = datetime.now(timezone.utc)
from app.models.inventory import StockMovement
records_deleted = {
"ingredients": 0,
"stock_movements": 0,
"stock": 0,
"ingredients": 0,
"total": 0
}
try:
# Delete in reverse dependency order
# 1. Delete stock batches (depends on ingredients)
# 1. Delete stock movements (depends on stock and ingredients)
result = await db.execute(
delete(StockMovement)
.where(StockMovement.tenant_id == virtual_tenant_id)
)
records_deleted["stock_movements"] = result.rowcount
# 2. Delete stock batches (depends on ingredients)
result = await db.execute(
delete(Stock)
.where(Stock.tenant_id == virtual_tenant_id)
)
records_deleted["stock"] = result.rowcount
# 2. Delete ingredients
# 3. Delete ingredients
result = await db.execute(
delete(Ingredient)
.where(Ingredient.tenant_id == virtual_tenant_id)
)
records_deleted["ingredients"] = result.rowcount
records_deleted["total"] = sum(records_deleted.values())
records_deleted["total"] = records_deleted["stock_movements"] + records_deleted["stock"] + records_deleted["ingredients"]
await db.commit()
@@ -603,7 +613,7 @@ async def delete_demo_tenant_data(
)
@router.get("/internal/count")
@router.get("/count")
async def get_ingredient_count(
tenant_id: str,
db: AsyncSession = Depends(get_db),