-- Step 2: Add missing columns to your existing orders table
-- This will add the required columns without dropping existing data
-- Add status column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'status'
) THEN
ALTER TABLE orders ADD COLUMN status TEXT;
END IF;
END $$;
-- Add eta column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'eta'
) THEN
ALTER TABLE orders ADD COLUMN eta DATE;
END IF;
END $$;
-- Add carrier column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'carrier'
) THEN
ALTER TABLE orders ADD COLUMN carrier TEXT;
END IF;
END $$;
-- Add tracking_number column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'tracking_number'
) THEN
ALTER TABLE orders ADD COLUMN tracking_number TEXT;
END IF;
END $$;
-- Add last_update column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'last_update'
) THEN
ALTER TABLE orders ADD COLUMN last_update TIMESTAMPTZ DEFAULT NOW();
END IF;
END $$;
-- Add issue_flag column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'issue_flag'
) THEN
ALTER TABLE orders ADD COLUMN issue_flag TEXT;
END IF;
END $$;
-- Add notes column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'orders' AND column_name = 'notes'
) THEN
ALTER TABLE orders ADD COLUMN notes TEXT;
END IF;
END $$;
-- Add constraint on status if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.table_constraints
WHERE table_name = 'orders'
AND constraint_name = 'orders_status_check'
) THEN
ALTER TABLE orders ADD CONSTRAINT orders_status_check
CHECK (status IS NULL OR status IN ('PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELED', 'RETURNED', 'ON_HOLD'));
END IF;
END $$;
-- Verify the structure
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'orders'
ORDER BY ordinal_position;