mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
# frozen_string_literal: true
|
|
|
|
class UpdateFieldOptions < ActiveRecord::Migration[7.0]
|
|
class MigrationTemplate < ApplicationRecord
|
|
self.table_name = 'templates'
|
|
end
|
|
|
|
class MigrationSubmission < ApplicationRecord
|
|
self.table_name = 'submissions'
|
|
end
|
|
|
|
def up
|
|
MigrationTemplate.find_each do |template|
|
|
next if template.fields.blank?
|
|
|
|
template_fields = JSON.parse(template.fields)
|
|
|
|
new_fields = template_fields.deep_dup
|
|
|
|
new_fields.each do |field|
|
|
if field['options'].present? && !field['options'].first.is_a?(Hash)
|
|
field['options'] = field['options'].map { |o| { value: o || '', uuid: SecureRandom.uuid } }
|
|
end
|
|
end
|
|
|
|
template.update_columns(fields: new_fields.to_json) if template_fields != new_fields
|
|
end
|
|
|
|
MigrationSubmission.find_each do |submission|
|
|
next if submission.template_fields.blank?
|
|
|
|
template_fields = JSON.parse(submission.template_fields)
|
|
|
|
new_fields = template_fields.deep_dup
|
|
|
|
new_fields.each do |field|
|
|
if field['options'].present? && !field['options'].first.is_a?(Hash)
|
|
field['options'] = field['options'].map { |o| { value: o || '', uuid: SecureRandom.uuid } }
|
|
end
|
|
end
|
|
|
|
submission.update_columns(template_fields: new_fields.to_json) if template_fields != new_fields
|
|
end
|
|
end
|
|
|
|
def down
|
|
nil
|
|
end
|
|
end
|