-- Vendors Table
CREATE TABLE supply.vendors (
tenant_id UUID,
vendor_id UUID,
name VARCHAR(100) NOT NULL,
contact_info JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
PRIMARY KEY (tenant_id, vendor_id),
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
-- Orders Table
CREATE TABLE supply.orders (
tenant_id UUID,
order_id UUID,
vendor_id UUID,
order_date TIMESTAMP NOT NULL,
status VARCHAR(50) NOT NULL,
total_amount NUMERIC(15, 2) NOT NULL,
PRIMARY KEY (tenant_id, order_id),
FOREIGN KEY (tenant_id, vendor_id) REFERENCES supply.vendors(tenant_id, vendor_id)
);
-- Order Items Table
CREATE TABLE supply.order_items (
tenant_id UUID,
order_item_id UUID,
order_id UUID,
product_name VARCHAR(100) NOT NULL,
quantity INT NOT NULL,
price NUMERIC(15, 2) NOT NULL,
PRIMARY KEY (tenant_id, order_item_id),
FOREIGN KEY (tenant_id, order_id) REFERENCES supply.orders(tenant_id, order_id)
);
-- Shipments Table
CREATE TABLE supply.shipments (
tenant_id UUID,
shipment_id UUID,
order_id UUID,
shipment_date TIMESTAMP,
delivery_date TIMESTAMP,
status VARCHAR(50),
tracking_info JSONB,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
PRIMARY KEY (tenant_id, shipment_id),
FOREIGN KEY (tenant_id, order_id) REFERENCES supply.orders(tenant_id, order_id)
);
-- Fulfillment Services Table
CREATE TABLE supply.fulfillment_services (
tenant_id UUID,
service_id UUID,
name VARCHAR(100) NOT NULL,
contact_info JSONB,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, service_id),
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
-- Sales Channels Table
CREATE TABLE supply.sales_channels (
tenant_id UUID,
channel_id UUID,
name VARCHAR(100) NOT NULL,
contact_info JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, channel_id),
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
-- Sales Orders Table
CREATE TABLE supply.sales_orders (
tenant_id UUID,
sales_order_id UUID,
channel_id UUID,
order_date TIMESTAMP NOT NULL,
status VARCHAR(50) NOT NULL,
total_amount NUMERIC(15, 2) NOT NULL,
PRIMARY KEY (tenant_id, sales_order_id),
FOREIGN KEY (tenant_id, channel_id) REFERENCES supply.sales_channels(tenant_id, channel_id)
);
-- Sales Order Items Table
CREATE TABLE supply.sales_order_items (
tenant_id UUID,
sales_order_item_id UUID,
sales_order_id UUID,
product_name VARCHAR(100) NOT NULL,
quantity INT NOT NULL,
price NUMERIC(15, 2) NOT NULL,
PRIMARY KEY (tenant_id, sales_order_item_id),
FOREIGN KEY (tenant_id, sales_order_id) REFERENCES supply.sales_orders(tenant_id, sales_order_id)
);