"""Comprehensive DB and code check for cascade delete""" import sys, json, os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) os.chdir(os.path.dirname(os.path.abspath(__file__))) # Check services/db.py for query function with open('services/db.py') as f: db_code = f.read() print("=== query function ===") idx = db_code.find('def query') if idx > 0: print(db_code[idx:idx+500]) # Check the product delete route in routes/products.py with open('routes/products.py') as f: prods_code = f.read() idx = prods_code.find('def product_delete') if idx > 0: end = prods_code.find('\n@', idx) if end == -1: end = len(prods_code) print("\n=== product_delete route ===") print(prods_code[idx:end]) else: idx = prods_code.find('def product_delete') print(f"product_delete function at {idx}") # Check for SQL in routes/planning.py with open('routes/planning.py') as f: plan_code = f.read() # Find table references for line in plan_code.split('\n'): if 'product_code' in line.lower() and ('SELECT' in line or 'FROM' in line or 'WHERE' in line or 'INSERT' in line or 'DELETE' in line or 'UPDATE' in line or 'query(' in line): print(f"\nplanning SQL: {line.strip()[:200]}") # Check for bom file try: with open('routes/bom.py') as f: bom_code = f.read() for line in bom_code.split('\n'): if 'product_code' in line.lower() and ('SELECT' in line or 'FROM' in line or 'WHERE' in line or 'INSERT' in line or 'DELETE' in line or 'UPDATE' in line or 'query(' in line): print(f"\nbom SQL: {line.strip()[:200]}") except: print("\nbom.py: not found") # Also check for BOM routes in app.js with open('static/js/app.js') as f: app_js = f.read() # Find BOM API calls for line in app_js.split('\n'): if '/api/bom' in line.lower() or '/api/product/bom' in line.lower(): print(f"\nJS BOM API: {line.strip()[:200]}")