ploughshares/docker/ploughshares/schema.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);