#!/usr/bin/env python3 """ Create Inventory Entries for Products This script creates inventory entries for all products that don't have inventory. Each product gets 100 units in stock. """ import sys from pathlib import Path # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) import os import sqlite3 from datetime import UTC, datetime from dotenv import load_dotenv # Load environment variables load_dotenv() # Get database URL database_url = os.getenv("DATABASE_URL", "orion.db") db_path = database_url.replace("sqlite:///", "") print(f"šŸ“¦ Creating inventory entries in {db_path}...") conn = sqlite3.connect(db_path) cursor = conn.cursor() # Get products without inventory cursor.execute( """ SELECT p.id, p.store_id, p.product_id FROM products p LEFT JOIN inventory i ON p.id = i.product_id WHERE i.id IS NULL """ ) products_without_inventory = cursor.fetchall() if not products_without_inventory: print("āœ… All products already have inventory entries") conn.close() sys.exit(0) print(f"šŸ“¦ Creating inventory for {len(products_without_inventory)} products...") # Create inventory entries for product_id, store_id, _sku in products_without_inventory: cursor.execute( """ INSERT INTO inventory ( store_id, product_id, location, quantity, reserved_quantity, created_at, updated_at ) VALUES (?, ?, ?, ?, ?, ?, ?) """, ( store_id, product_id, "Main Warehouse", 100, # Total quantity 0, # Reserved quantity datetime.now(UTC), datetime.now(UTC), ), ) conn.commit() print(f"āœ… Created inventory entries for {len(products_without_inventory)} products") # Show stats cursor.execute("SELECT COUNT(*) FROM inventory") total_count = cursor.fetchone()[0] print(f"\nšŸ“Š Total inventory entries: {total_count}") cursor.execute( "SELECT product_id, location, quantity, reserved_quantity FROM inventory LIMIT 5" ) print("\nšŸ“¦ Sample inventory:") for row in cursor.fetchall(): available = row[2] - row[3] print(f" Product ID {row[0]}: {available} available at {row[1]}") conn.close() print("\nāœ… Done!")