FIX: assignment table migration when SKIP_POST_DEPLOYMENT_MIGRATIONS (#217)
We need two branches of that migration. One when `assigned_to_type` is missing and another when `assigned_to_type` exists. https://meta.discourse.org/t/db-migration-version-20210714173022-fails-when-having-skipped-post-deployment-migrations-before/204660
This commit is contained in:
parent
3a58df219c
commit
5124ba0f67
|
@ -12,21 +12,40 @@ class CorrectlyMoveAssignmentsFromCustomFieldsToATable < ActiveRecord::Migration
|
||||||
AND topic_custom_fields.name = 'assigned_to_id'
|
AND topic_custom_fields.name = 'assigned_to_id'
|
||||||
SQL
|
SQL
|
||||||
|
|
||||||
execute <<~SQL
|
if column_exists?(:assignments, :assigned_to_type)
|
||||||
INSERT INTO assignments (assigned_to_id, assigned_by_user_id, topic_id, created_at, updated_at)
|
execute <<~SQL
|
||||||
SELECT
|
INSERT INTO assignments (assigned_to_id, assigned_by_user_id, topic_id, created_at, updated_at, assigned_to_type)
|
||||||
assigned_to.value::integer,
|
SELECT
|
||||||
assigned_by.value::integer,
|
assigned_to.value::integer,
|
||||||
assigned_by.topic_id,
|
assigned_by.value::integer,
|
||||||
assigned_by.created_at,
|
assigned_by.topic_id,
|
||||||
assigned_by.updated_at
|
assigned_by.created_at,
|
||||||
FROM topic_custom_fields assigned_by
|
assigned_by.updated_at,
|
||||||
INNER JOIN topic_custom_fields assigned_to ON assigned_to.topic_id = assigned_by.topic_id
|
'User'
|
||||||
WHERE assigned_by.name = 'assigned_by_id'
|
FROM topic_custom_fields assigned_by
|
||||||
AND assigned_to.name = 'assigned_to_id'
|
INNER JOIN topic_custom_fields assigned_to ON assigned_to.topic_id = assigned_by.topic_id
|
||||||
ORDER BY assigned_by.created_at DESC
|
WHERE assigned_by.name = 'assigned_by_id'
|
||||||
ON CONFLICT DO NOTHING
|
AND assigned_to.name = 'assigned_to_id'
|
||||||
SQL
|
ORDER BY assigned_by.created_at DESC
|
||||||
|
ON CONFLICT DO NOTHING
|
||||||
|
SQL
|
||||||
|
else
|
||||||
|
execute <<~SQL
|
||||||
|
INSERT INTO assignments (assigned_to_id, assigned_by_user_id, topic_id, created_at, updated_at)
|
||||||
|
SELECT
|
||||||
|
assigned_to.value::integer,
|
||||||
|
assigned_by.value::integer,
|
||||||
|
assigned_by.topic_id,
|
||||||
|
assigned_by.created_at,
|
||||||
|
assigned_by.updated_at
|
||||||
|
FROM topic_custom_fields assigned_by
|
||||||
|
INNER JOIN topic_custom_fields assigned_to ON assigned_to.topic_id = assigned_by.topic_id
|
||||||
|
WHERE assigned_by.name = 'assigned_by_id'
|
||||||
|
AND assigned_to.name = 'assigned_to_id'
|
||||||
|
ORDER BY assigned_by.created_at DESC
|
||||||
|
ON CONFLICT DO NOTHING
|
||||||
|
SQL
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
|
|
Loading…
Reference in New Issue