Sha256: 584e069e7a99a03d373167f6770b78712c4f5d4aeab3a8cc4713bc8837198d9a

Contents?: true

Size: 1.78 KB

Versions: 19

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

class MergeMinutesWithClosingReportInMeetingsTable < ActiveRecord::Migration[6.0]
  class Meeting < ApplicationRecord
    self.table_name = "decidim_meetings_meetings"
  end

  def up
    Meeting.find_each do |meeting|
      check_close_data_presence(meeting)
      check_closing_visibility(meeting)
      merge_closing_report(meeting)

      meeting.save!
    end

    rename_column :decidim_meetings_meetings, :minutes_visible, :closing_visible
    remove_column :decidim_meetings_meetings, :minutes_description
  end

  def down
    add_column :decidim_meetings_meetings, :minutes_description, :jsonb
    rename_column :decidim_meetings_meetings, :closing_visible, :minutes_visible
  end
end

private

# Ensures close meeting if minutes_data exists
def check_close_data_presence(meeting)
  return if meeting.closed_at.present? || !minutes_data?(meeting)

  meeting.closed_at = Time.current
end

# If meeting is closed and minutes data is blank the closing
# should remain visible unless it has already been defined
def check_closing_visibility(meeting)
  return unless meeting.minutes_visible.nil?
  return if minutes_data?(meeting) || meeting.closed_at.blank?

  meeting.minutes_visible = true
end

# Ignore minutes_description if already exists a closing report or
# minutes_description is blank
def merge_closing_report(meeting)
  return if meeting.closing_report.is_a?(Hash) && meeting.closing_report.values.any?(&:present?)
  return unless meeting.minutes_description.is_a?(Hash) && meeting.minutes_description.values.any?(&:present?)

  meeting.closing_report = meeting.minutes_description
end

def minutes_data?(meeting)
  [meeting.video_url, meeting.audio_url].any?(&:present?) ||
    meeting.minutes_description.is_a?(Hash) && meeting.minutes_description.values.any?(&:present?)
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
decidim-meetings-0.26.10 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.9 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.8 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.7 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.5 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.4 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.3 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.2 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.1 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.0 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.0.rc2 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.26.0.rc1 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.2 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.1 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.0 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.0.rc4 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.0.rc3 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.0.rc2 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb
decidim-meetings-0.25.0.rc1 db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb