-- Initial Database Setup for Quote & Invoice System -- Run this first to create the basic tables -- Create customers table CREATE TABLE IF NOT EXISTS customers ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, street VARCHAR(255) NOT NULL, city VARCHAR(100) NOT NULL, state VARCHAR(2) NOT NULL, zip_code VARCHAR(10) NOT NULL, account_number VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Create quotes table CREATE TABLE IF NOT EXISTS quotes ( id SERIAL PRIMARY KEY, quote_number VARCHAR(50) UNIQUE NOT NULL, customer_id INTEGER REFERENCES customers(id), quote_date DATE NOT NULL, tax_exempt BOOLEAN DEFAULT FALSE, tax_rate DECIMAL(5,2) DEFAULT 8.25, subtotal DECIMAL(10,2) DEFAULT 0, tax_amount DECIMAL(10,2) DEFAULT 0, total DECIMAL(10,2) DEFAULT 0, has_tbd BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Create quote_items table CREATE TABLE IF NOT EXISTS quote_items ( id SERIAL PRIMARY KEY, quote_id INTEGER REFERENCES quotes(id) ON DELETE CASCADE, quantity VARCHAR(20) NOT NULL, description TEXT NOT NULL, rate VARCHAR(50) NOT NULL, amount VARCHAR(50) NOT NULL, item_order INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Create indexes for better performance CREATE INDEX IF NOT EXISTS idx_quotes_quote_number ON quotes(quote_number); CREATE INDEX IF NOT EXISTS idx_quotes_customer_id ON quotes(customer_id); CREATE INDEX IF NOT EXISTS idx_quote_items_quote_id ON quote_items(quote_id); -- Insert sample customer INSERT INTO customers (name, street, city, state, zip_code, account_number) VALUES ('Braselton Development', '5337 Yorktown Blvd. Suite 10-D', 'Corpus Christi', 'TX', '78414', '3617790060') ON CONFLICT DO NOTHING;