-- Create categories table CREATE TABLE IF NOT EXISTS categories ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL UNIQUE, description TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Create components table CREATE TABLE IF NOT EXISTS components ( id SERIAL PRIMARY KEY, part_number VARCHAR(100) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL, description TEXT, category_id INTEGER REFERENCES categories(id) ON DELETE SET NULL, manufacturer VARCHAR(255), package_type VARCHAR(100), unit_price NUMERIC(12, 4) DEFAULT 0, stock_quantity INTEGER DEFAULT 0, min_stock_level INTEGER DEFAULT 0, datasheet_url TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Create products table CREATE TABLE IF NOT EXISTS products ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, sku VARCHAR(100) NOT NULL UNIQUE, description TEXT, version VARCHAR(50) DEFAULT '1.0', status VARCHAR(50) DEFAULT 'draft', created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Create bom_items table (links components to products) CREATE TABLE IF NOT EXISTS bom_items ( id SERIAL PRIMARY KEY, product_id INTEGER NOT NULL REFERENCES products(id) ON DELETE CASCADE, component_id INTEGER NOT NULL REFERENCES components(id) ON DELETE CASCADE, quantity INTEGER NOT NULL DEFAULT 1, reference_designator VARCHAR(255), notes TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), UNIQUE(product_id, component_id, reference_designator) ); -- Seed some default categories INSERT INTO categories (name, description) VALUES ('Resistors', 'Fixed and variable resistors'), ('Capacitors', 'Ceramic, electrolytic, and film capacitors'), ('Inductors', 'Coils, chokes, and transformers'), ('Diodes', 'Signal, rectifier, Zener, and Schottky diodes'), ('Transistors', 'BJT, MOSFET, and JFET transistors'), ('ICs', 'Integrated circuits and microcontrollers'), ('Connectors', 'Headers, sockets, and plug connectors'), ('Crystals & Oscillators', 'Quartz crystals and oscillator modules'), ('LEDs', 'Light emitting diodes and displays'), ('Sensors', 'Temperature, pressure, and motion sensors') ON CONFLICT (name) DO NOTHING;