63 lines
2.2 KiB
SQL
63 lines
2.2 KiB
SQL
-- 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;
|