45 lines
1.5 KiB
SQL
45 lines
1.5 KiB
SQL
-- Drop tables if they exist
|
|
DROP TABLE IF EXISTS transaction_documents;
|
|
DROP TABLE IF EXISTS transactions;
|
|
|
|
-- Create transactions table
|
|
CREATE TABLE IF NOT EXISTS transactions (
|
|
id SERIAL PRIMARY KEY,
|
|
transaction_type VARCHAR(255),
|
|
company_division VARCHAR(255),
|
|
address_1 VARCHAR(255),
|
|
address_2 VARCHAR(255),
|
|
city VARCHAR(255),
|
|
province VARCHAR(255),
|
|
region VARCHAR(255),
|
|
postal_code VARCHAR(50),
|
|
is_primary BOOLEAN DEFAULT FALSE,
|
|
source_date DATE,
|
|
source_description TEXT,
|
|
grant_type VARCHAR(255),
|
|
description TEXT,
|
|
amount NUMERIC(15, 2),
|
|
recipient VARCHAR(255),
|
|
commodity_class VARCHAR(255),
|
|
contract_number VARCHAR(255),
|
|
comments TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create table for document attachments
|
|
CREATE TABLE transaction_documents (
|
|
document_id SERIAL PRIMARY KEY,
|
|
transaction_id INTEGER REFERENCES transactions(id) ON DELETE CASCADE,
|
|
filename VARCHAR(255) NOT NULL,
|
|
file_path VARCHAR(500) NOT NULL,
|
|
document_type VARCHAR(100),
|
|
description TEXT,
|
|
note TEXT,
|
|
upload_date TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create indexes for better performance
|
|
CREATE INDEX IF NOT EXISTS idx_transactions_type ON transactions(transaction_type);
|
|
CREATE INDEX IF NOT EXISTS idx_transactions_division ON transactions(company_division);
|
|
CREATE INDEX IF NOT EXISTS idx_transactions_recipient ON transactions(recipient);
|
|
CREATE INDEX IF NOT EXISTS idx_transaction_date ON transactions(source_date); |