-- ============================================================================= -- P0 ARCHITECTURE CLEANUP: Ghost Column Removal Script -- Generated: 2026-07-01 -- -- ⚠️ WARNING: Run this script ONLY after verifying that ALL code references -- to these ghost columns have been removed from the codebase. -- -- These columns were previously on fleet.organizations but have been -- replaced by the unified address system (system.addresses FK via -- address_id, billing_address_id, notification_address_id). -- -- The Organization model now uses Python properties that delegate to -- the `address` relationship (Address → GeoPostalCode). -- -- Audit reference: docs/p0_address_manager_usage_audit_2026-07-01.md -- ============================================================================= BEGIN; -- ═════════════════════════════════════════════════════════════════════════════ -- fleet.organizations — Primary Address Ghost Columns -- ═════════════════════════════════════════════════════════════════════════════ ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS address_city; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS address_zip; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS address_street_name; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS address_street_type; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS address_house_number; -- ═════════════════════════════════════════════════════════════════════════════ -- fleet.organizations — Billing Address Ghost Columns -- ═════════════════════════════════════════════════════════════════════════════ ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS billing_zip; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS billing_city; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS billing_street_name; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS billing_street_type; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS billing_house_number; -- ═════════════════════════════════════════════════════════════════════════════ -- fleet.organizations — Notification Address Ghost Columns -- ═════════════════════════════════════════════════════════════════════════════ ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS notification_zip; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS notification_city; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS notification_street_name; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS notification_street_type; ALTER TABLE fleet.organizations DROP COLUMN IF EXISTS notification_house_number; -- ═════════════════════════════════════════════════════════════════════════════ -- Verification Queries (run after migration to confirm cleanup) -- ═════════════════════════════════════════════════════════════════════════════ -- Should return 0 rows (all ghost columns removed): -- SELECT column_name -- FROM information_schema.columns -- WHERE table_schema = 'fleet' -- AND table_name = 'organizations' -- AND column_name IN ( -- 'address_city', 'address_zip', 'address_street_name', 'address_street_type', 'address_house_number', -- 'billing_zip', 'billing_city', 'billing_street_name', 'billing_street_type', 'billing_house_number', -- 'notification_zip', 'notification_city', 'notification_street_name', 'notification_street_type', 'notification_house_number' -- ); COMMIT;