Sha256: 46769395800b565f12667cc5bf10fededbf7cb678de9ddd1bb87ad7533fd36ae

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

class AddDecidimParticipatoryDocumentsBoxPositions < ActiveRecord::Migration[6.0]
  class Document < ApplicationRecord
    self.table_name = :decidim_participatory_documents_documents
    has_many :sections
    has_many :annotations, through: :sections
  end

  class Section < ApplicationRecord
    self.table_name = :decidim_participatory_documents_sections
    belongs_to :document
    has_many :annotations
  end

  class Annotation < ApplicationRecord
    self.table_name = :decidim_participatory_documents_annotations
    belongs_to :section
  end

  # rubocop:disable Rails/SkipsModelValidations:
  def change
    add_column :decidim_participatory_documents_annotations, :position, :integer, null: false, default: 0
    add_index :decidim_participatory_documents_annotations, :position
    add_column :decidim_participatory_documents_sections, :position, :integer, null: false, default: 0
    add_index :decidim_participatory_documents_sections, :position

    Section.find_each do |section|
      section.update_column(:position, section.document.sections.where("id < ?", section.id).count + 1)
    end

    Annotation.find_each do |annotation|
      annotation.update_column(:position, annotation.section.document.annotations.where("decidim_participatory_documents_annotations.id < ?", annotation.id).count + 1)
    end
  end
  # rubocop:enable Rails/SkipsModelValidations:
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-participatory_documents-0.2.2 db/migrate/20230622081831_add_decidim_participatory_documents_box_positions.rb
decidim-participatory_documents-0.2.1 db/migrate/20230622081831_add_decidim_participatory_documents_box_positions.rb
decidim-participatory_documents-0.2.0 db/migrate/20230622081831_add_decidim_participatory_documents_box_positions.rb