CREATE TABLE expenses (
expense_id uuid,
tenant_id uuid,
user_id uuid,
amount DECIMAL(10, 2),
category VARCHAR(255),
description TEXT,
expense_date DATE,
expense_embedding vector(256),
PRIMARY KEY(tenant_id, expense_id),
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
CREATE TABLE receipts (
receipt_id uuid,
tenant_id uuid,
expense_id uuid,
receipt_image BYTEA,
receipts_embedding vector(256),
PRIMARY KEY (tenant_id, receipt_id),
FOREIGN KEY (tenant_id, expense_id) REFERENCES expenses(tenant_id, expense_id)
);
CREATE TABLE expense_reports (
report_id uuid,
tenant_id uuid,
user_id uuid,
report_name VARCHAR(255),
start_date DATE,
end_date DATE,
status VARCHAR(50),
PRIMARY KEY (tenant_id, report_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES users.tenant_users(tenant_id, user_id)
);
CREATE TABLE expense_report_details (
report_detail_id uuid,
report_id uuid,
expense_id uuid,
tenant_id uuid,
PRIMARY KEY (tenant_id, report_detail_id),
FOREIGN KEY (tenant_id, expense_id) REFERENCES expenses(tenant_id, expense_id),
FOREIGN KEY (tenant_id, report_id) REFERENCES expense_reports(tenant_id, report_id)
);
CREATE TABLE user_preferences (
preference_id uuid,
tenant_id uuid,
user_id uuid,
preference_data JSONB,
PRIMARY KEY (tenant_id, preference_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES users.tenant_users(tenant_id, user_id)
);
CREATE TABLE expense_analytics (
analytics_id uuid,
tenant_id uuid,
user_id uuid,
analysis_date DATE,
insights TEXT,
PRIMARY KEY (tenant_id, analytics_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES users.tenant_users(tenant_id, user_id)
);