50 lines
2.1 KiB
MySQL
50 lines
2.1 KiB
MySQL
|
|
-- Migration 008: Relax tickets resource foreign key constraints
|
||
|
|
-- Allows tickets to sync even if assigned resources don't exist in our database
|
||
|
|
-- This is necessary because:
|
||
|
|
-- 1. Some tickets may reference deleted/inactive resources
|
||
|
|
-- 2. Resource sync may be incomplete
|
||
|
|
-- 3. Autotask may have data inconsistencies
|
||
|
|
|
||
|
|
-- Drop the strict foreign key constraint on assigned_resource_id
|
||
|
|
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_assigned_resource_id_fkey;
|
||
|
|
|
||
|
|
-- Drop other resource-related constraints that might cause issues
|
||
|
|
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_first_response_assigned_resource_id_fkey;
|
||
|
|
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_first_response_initiating_resource_id_fkey;
|
||
|
|
|
||
|
|
-- Make assigned_resource_id nullable (it should already be, but ensure it)
|
||
|
|
ALTER TABLE tickets ALTER COLUMN assigned_resource_id DROP NOT NULL;
|
||
|
|
ALTER TABLE tickets ALTER COLUMN first_response_assigned_resource_id DROP NOT NULL;
|
||
|
|
ALTER TABLE tickets ALTER COLUMN first_response_initiating_resource_id DROP NOT NULL;
|
||
|
|
|
||
|
|
-- Re-add as lenient foreign keys with ON DELETE SET NULL
|
||
|
|
-- This allows tickets to exist even if the resource doesn't exist
|
||
|
|
ALTER TABLE tickets
|
||
|
|
ADD CONSTRAINT tickets_assigned_resource_id_fkey
|
||
|
|
FOREIGN KEY (assigned_resource_id) REFERENCES resources(id)
|
||
|
|
ON DELETE SET NULL
|
||
|
|
DEFERRABLE INITIALLY DEFERRED;
|
||
|
|
|
||
|
|
ALTER TABLE tickets
|
||
|
|
ADD CONSTRAINT tickets_first_response_assigned_resource_id_fkey
|
||
|
|
FOREIGN KEY (first_response_assigned_resource_id) REFERENCES resources(id)
|
||
|
|
ON DELETE SET NULL
|
||
|
|
DEFERRABLE INITIALLY DEFERRED;
|
||
|
|
|
||
|
|
ALTER TABLE tickets
|
||
|
|
ADD CONSTRAINT tickets_first_response_initiating_resource_id_fkey
|
||
|
|
FOREIGN KEY (first_response_initiating_resource_id) REFERENCES resources(id)
|
||
|
|
ON DELETE SET NULL
|
||
|
|
DEFERRABLE INITIALLY DEFERRED;
|
||
|
|
|
||
|
|
-- Also relax tasks resource constraint
|
||
|
|
ALTER TABLE tasks DROP CONSTRAINT IF EXISTS tasks_assigned_resource_id_fkey;
|
||
|
|
|
||
|
|
ALTER TABLE tasks ALTER COLUMN assigned_resource_id DROP NOT NULL;
|
||
|
|
|
||
|
|
ALTER TABLE tasks
|
||
|
|
ADD CONSTRAINT tasks_assigned_resource_id_fkey
|
||
|
|
FOREIGN KEY (assigned_resource_id) REFERENCES resources(id)
|
||
|
|
ON DELETE SET NULL
|
||
|
|
DEFERRABLE INITIALLY DEFERRED;
|