fix demo session 1
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user