CREATE TABLE customers ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE, phone VARCHAR(20), address VARCHAR(500), is_default BOOLEAN DEFAULT FALSE, is_active BOOLEAN DEFAULT TRUE, metadata JSONB DEFAULT '{}', created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), CONSTRAINT fk_customers_organization FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE ); -- Create indexes CREATE INDEX idx_customers_organization_id ON customers(organization_id); CREATE INDEX idx_customers_email ON customers(email); CREATE INDEX idx_customers_is_default ON customers(is_default); CREATE INDEX idx_customers_is_active ON customers(is_active); -- Create unique constraint to ensure only one default customer per organization CREATE UNIQUE INDEX idx_customers_org_default ON customers(organization_id, is_default) WHERE is_default = TRUE;