Abhishek
Added dummy sqlite DB
3b382fd
# erp_db_init.py
import sqlite3
import os
import pathlib
def init_sqlite_db(db_path='./data/erp_db.sqlite'):
"""Initialize SQLite database with ERP tables."""
try:
# Create the database directory if it doesn't exist
db_dir = pathlib.Path(os.path.dirname(db_path))
db_dir.mkdir(exist_ok=True)
# Connect to SQLite database (will be created if it doesn't exist)
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Enable foreign keys
conn.execute("PRAGMA foreign_keys = ON")
# Create customers table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_customers (
customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT,
address TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
# Create products table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_products (
product_id INTEGER PRIMARY KEY AUTOINCREMENT,
product_name TEXT NOT NULL,
description TEXT,
category TEXT,
price REAL NOT NULL,
stock_quantity INTEGER NOT NULL DEFAULT 0,
sku TEXT UNIQUE
)
''')
# Create orders table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_orders (
order_id INTEGER PRIMARY KEY AUTOINCREMENT,
customer_id INTEGER,
order_date DATE DEFAULT CURRENT_DATE,
total_amount REAL NOT NULL,
status TEXT NOT NULL DEFAULT 'Processing',
previous_order_id INTEGER,
estimated_delivery DATE,
actual_delivery DATE,
payment_status TEXT DEFAULT 'Pending',
shipping_address TEXT NOT NULL,
shipping_country TEXT,
destination_country TEXT,
FOREIGN KEY (customer_id) REFERENCES erp_customers (customer_id),
FOREIGN KEY (previous_order_id) REFERENCES erp_orders (order_id)
)
''')
# Create order items table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_order_items (
order_item_id INTEGER PRIMARY KEY AUTOINCREMENT,
order_id INTEGER,
product_id INTEGER,
quantity INTEGER NOT NULL,
unit_price REAL NOT NULL,
subtotal REAL NOT NULL,
FOREIGN KEY (order_id) REFERENCES erp_orders (order_id),
FOREIGN KEY (product_id) REFERENCES erp_products (product_id)
)
''')
# Create order history table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_order_history (
history_id INTEGER PRIMARY KEY AUTOINCREMENT,
order_id INTEGER,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status_change TEXT,
notes TEXT,
updated_by TEXT,
FOREIGN KEY (order_id) REFERENCES erp_orders (order_id)
)
''')
# Create invoices table
cursor.execute('''
CREATE TABLE IF NOT EXISTS erp_invoices (
invoice_id INTEGER PRIMARY KEY AUTOINCREMENT,
order_id INTEGER,
invoice_date DATE DEFAULT CURRENT_DATE,
amount REAL NOT NULL,
payment_terms TEXT,
due_date DATE,
is_paid BOOLEAN DEFAULT 0,
invoice_number TEXT UNIQUE,
FOREIGN KEY (order_id) REFERENCES erp_orders (order_id)
)
''')
# Create global disruptions table
cursor.execute('''
CREATE TABLE IF NOT EXISTS live_global_disruptions (
disruption_id INTEGER PRIMARY KEY AUTOINCREMENT,
source_country TEXT NOT NULL,
destination_country TEXT NOT NULL,
disruption_type TEXT NOT NULL,
severity INTEGER NOT NULL CHECK (severity >= 1 AND severity <= 5),
start_date DATE NOT NULL,
expected_end_date DATE,
actual_end_date DATE,
is_active BOOLEAN DEFAULT 1,
description TEXT,
impact_hours INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE (source_country, destination_country, disruption_type, start_date)
)
''')
# Create indexes
cursor.execute('CREATE INDEX IF NOT EXISTS idx_orders_customer ON erp_orders (customer_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_order_items_order ON erp_order_items (order_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_order_items_product ON erp_order_items (product_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_order_history_order ON erp_order_history (order_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_invoices_order ON erp_invoices (order_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_global_disruptions_active ON live_global_disruptions (is_active)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_global_disruptions_countries ON live_global_disruptions (source_country, destination_country)')
conn.commit()
conn.close()
return True
except Exception as e:
print(f"Error initializing SQLite database: {str(e)}")
return False
if __name__ == "__main__":
init_sqlite_db()