-- Fix script for settings table column issues -- Run this in your PostgreSQL database to resolve the schema mismatch -- Step 1: Rename the old column to the new name ALTER TABLE settings RENAME COLUMN company_logo_path TO company_logo_filename; -- Step 2: Add any missing columns (these will be skipped if they already exist) DO $$ BEGIN -- Company branding columns IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_name') THEN ALTER TABLE settings ADD COLUMN company_name VARCHAR(200) DEFAULT 'Your Company Name' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_address') THEN ALTER TABLE settings ADD COLUMN company_address TEXT DEFAULT 'Your Company Address' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_email') THEN ALTER TABLE settings ADD COLUMN company_email VARCHAR(200) DEFAULT 'info@yourcompany.com' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_phone') THEN ALTER TABLE settings ADD COLUMN company_phone VARCHAR(50) DEFAULT '+1 (555) 123-4567' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_website') THEN ALTER TABLE settings ADD COLUMN company_website VARCHAR(200) DEFAULT 'www.yourcompany.com' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_tax_id') THEN ALTER TABLE settings ADD COLUMN company_tax_id VARCHAR(100) DEFAULT '' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'company_bank_info') THEN ALTER TABLE settings ADD COLUMN company_bank_info TEXT DEFAULT '' NOT NULL; END IF; -- Invoice default columns IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'invoice_prefix') THEN ALTER TABLE settings ADD COLUMN invoice_prefix VARCHAR(10) DEFAULT 'INV' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'invoice_start_number') THEN ALTER TABLE settings ADD COLUMN invoice_start_number INTEGER DEFAULT 1000 NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'invoice_terms') THEN ALTER TABLE settings ADD COLUMN invoice_terms TEXT DEFAULT 'Payment is due within 30 days of invoice date.' NOT NULL; END IF; IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'settings' AND column_name = 'invoice_notes') THEN ALTER TABLE settings ADD COLUMN invoice_notes TEXT DEFAULT 'Thank you for your business!' NOT NULL; END IF; END $$; -- Step 3: Update existing settings with default values UPDATE settings SET company_name = COALESCE(company_name, 'Your Company Name'), company_address = COALESCE(company_address, 'Your Company Address'), company_email = COALESCE(company_email, 'info@yourcompany.com'), company_phone = COALESCE(company_phone, '+1 (555) 123-4567'), company_website = COALESCE(company_website, 'www.yourcompany.com'), company_logo_filename = COALESCE(company_logo_filename, ''), company_tax_id = COALESCE(company_tax_id, ''), company_bank_info = COALESCE(company_bank_info, ''), invoice_prefix = COALESCE(invoice_prefix, 'INV'), invoice_start_number = COALESCE(invoice_start_number, 1000), invoice_terms = COALESCE(invoice_terms, 'Payment is due within 30 days of invoice date.'), invoice_notes = COALESCE(invoice_notes, 'Thank you for your business!') WHERE id = (SELECT id FROM settings LIMIT 1); -- Step 4: Verify the fix SELECT 'Settings table fixed successfully!' as status; SELECT column_name FROM information_schema.columns WHERE table_name = 'settings' ORDER BY column_name;