29 lines
1 KiB
Ruby
29 lines
1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class CreateEnvironmentForSelfMonitoringProject < ActiveRecord::Migration[6.0]
|
||
|
DOWNTIME = false
|
||
|
|
||
|
def up
|
||
|
execute <<~SQL
|
||
|
INSERT INTO environments (project_id, name, slug, created_at, updated_at)
|
||
|
SELECT instance_administration_project_id, 'production', 'production', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP
|
||
|
FROM application_settings
|
||
|
WHERE instance_administration_project_id IS NOT NULL
|
||
|
AND NOT EXISTS (
|
||
|
SELECT 1
|
||
|
FROM environments
|
||
|
INNER JOIN application_settings
|
||
|
ON application_settings.instance_administration_project_id = environments.project_id
|
||
|
)
|
||
|
SQL
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
# no-op
|
||
|
|
||
|
# This migration cannot be reversed because it cannot be ensured that the environment for the Self Monitoring Project
|
||
|
# did not already exist before the migration ran - in that case, the migration does nothing, and it would be unexpected
|
||
|
# behavior for that environment to be deleted by reversing this migration.
|
||
|
end
|
||
|
end
|