diff --git a/app/models/guidance_group.rb b/app/models/guidance_group.rb index db9888a..36d780d 100644 --- a/app/models/guidance_group.rb +++ b/app/models/guidance_group.rb @@ -7,8 +7,8 @@ # # id :integer not null, primary key # name :string -# optional_subset :boolean -# published :boolean +# optional_subset :boolean default(FALSE), not null +# published :boolean default(FALSE), not null # created_at :datetime not null # updated_at :datetime not null # org_id :integer diff --git a/app/models/note.rb b/app/models/note.rb index a78dc00..f63d5a6 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -3,7 +3,7 @@ # Table name: notes # # id :integer not null, primary key -# archived :boolean +# archived :boolean default(FALSE), not null # archived_by :integer # text :text # created_at :datetime diff --git a/app/models/org.rb b/app/models/org.rb index cc259f9..bf00cdd 100644 --- a/app/models/org.rb +++ b/app/models/org.rb @@ -11,6 +11,7 @@ # feedback_email_subject :string # feedback_enabled :boolean default(FALSE) # is_other :boolean +# is_other :boolean default(FALSE), not null # links :text # logo_file_name :string # logo_name :string diff --git a/db/migrate/20180807114035_add_default_value_to_optional_subset_on_guidance_groups.rb b/db/migrate/20180807114035_add_default_value_to_optional_subset_on_guidance_groups.rb new file mode 100644 index 0000000..45f686e --- /dev/null +++ b/db/migrate/20180807114035_add_default_value_to_optional_subset_on_guidance_groups.rb @@ -0,0 +1,8 @@ +class AddDefaultValueToOptionalSubsetOnGuidanceGroups < ActiveRecord::Migration + def up + change_column :guidance_groups, :optional_subset, :boolean, default: false, null: false + end + def down + change_column :guidance_groups, :optional_subset, :boolean, default: nil, null: true + end +end diff --git a/db/migrate/20180807114052_add_default_value_to_published_on_guidance_groups.rb b/db/migrate/20180807114052_add_default_value_to_published_on_guidance_groups.rb new file mode 100644 index 0000000..25006ae --- /dev/null +++ b/db/migrate/20180807114052_add_default_value_to_published_on_guidance_groups.rb @@ -0,0 +1,8 @@ +class AddDefaultValueToPublishedOnGuidanceGroups < ActiveRecord::Migration + def up + change_column :guidance_groups, :published, :boolean, default: false, null: false + end + def down + change_column :guidance_groups, :published, :boolean, default: nil, null: true + end +end diff --git a/db/migrate/20180807120926_add_default_value_to_archived_on_notes.rb b/db/migrate/20180807120926_add_default_value_to_archived_on_notes.rb new file mode 100644 index 0000000..c03e3f5 --- /dev/null +++ b/db/migrate/20180807120926_add_default_value_to_archived_on_notes.rb @@ -0,0 +1,9 @@ +class AddDefaultValueToArchivedOnNotes < ActiveRecord::Migration + def up + change_column :notes, :archived, :boolean, default: false, null: false + end + + def down + change_column :notes, :archived, :boolean, default: nil, null: true + end +end diff --git a/db/migrate/20180807121126_add_default_value_to_is_other_on_orgs.rb b/db/migrate/20180807121126_add_default_value_to_is_other_on_orgs.rb new file mode 100644 index 0000000..3aade3b --- /dev/null +++ b/db/migrate/20180807121126_add_default_value_to_is_other_on_orgs.rb @@ -0,0 +1,8 @@ +class AddDefaultValueToIsOtherOnOrgs < ActiveRecord::Migration + def up + change_column :orgs, :is_other, :boolean, default: false, null: false + end + def down + change_column :orgs, :is_other, :boolean, default: nil, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 6bf71f9..422ac3c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180803105147) do +ActiveRecord::Schema.define(version: 20180807121126) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -80,10 +80,10 @@ create_table "guidance_groups", force: :cascade do |t| t.string "name" t.integer "org_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "optional_subset" - t.boolean "published" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "optional_subset", default: false, null: false + t.boolean "published", default: false, null: false end add_index "guidance_groups", ["org_id"], name: "index_guidance_groups_on_org_id", using: :btree @@ -119,7 +119,7 @@ create_table "notes", force: :cascade do |t| t.integer "user_id" t.text "text" - t.boolean "archived" + t.boolean "archived", default: false, null: false t.integer "answer_id" t.integer "archived_by" t.datetime "created_at" @@ -176,7 +176,7 @@ t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "parent_id" - t.boolean "is_other" + t.boolean "is_other", default: false, null: false t.string "sort_name" t.text "banner_text" t.string "logo_file_name" diff --git a/lib/data_cleanup/rules/answer/fix_blank_user.rb b/lib/data_cleanup/rules/answer/fix_blank_user.rb index 95fc0ba..3baee86 100644 --- a/lib/data_cleanup/rules/answer/fix_blank_user.rb +++ b/lib/data_cleanup/rules/answer/fix_blank_user.rb @@ -15,7 +15,7 @@ .find_in_batches do |answers| answers.each do |answer| - log("Updating Answer##{answer.id} with user: #{user.plan.owner}") + log("Updating Answer##{answer.id} with user: #{answer.plan.owner}") answer.update(user: answer.plan.owner) end end diff --git a/lib/data_cleanup/rules/guidance_group/fix_blank_optional_subset.rb b/lib/data_cleanup/rules/guidance_group/fix_blank_optional_subset.rb deleted file mode 100644 index 9ca7498..0000000 --- a/lib/data_cleanup/rules/guidance_group/fix_blank_optional_subset.rb +++ /dev/null @@ -1,18 +0,0 @@ -module DataCleanup - module Rules - module GuidanceGroup - class FixBlankOptionalSubset < Rules::Base - - def description - "Fix blank optional subset on GuidanceGroup" - end - - def call - log("Updating all GuidanceGroups") - ::GuidanceGroup.where(optional_subset: nil) - .update_all(optional_subset: false) - end - end - end - end -end diff --git a/lib/data_cleanup/rules/guidance_group/fix_blank_published.rb b/lib/data_cleanup/rules/guidance_group/fix_blank_published.rb deleted file mode 100644 index f11b95b..0000000 --- a/lib/data_cleanup/rules/guidance_group/fix_blank_published.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true -module DataCleanup - module Rules - module GuidanceGroup - # Fix blank published on GuidanceGroup - class FixBlankPublished < Rules::Base - - def description - "Fix blank published on GuidanceGroup" - end - - def call - ::GuidanceGroup.where(published: nil).update_all(published: false) - end - end - end - end -end diff --git a/lib/data_cleanup/rules/note/fix_blank_archived.rb b/lib/data_cleanup/rules/note/fix_blank_archived.rb deleted file mode 100644 index 0f12339..0000000 --- a/lib/data_cleanup/rules/note/fix_blank_archived.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true -module DataCleanup - module Rules - # Fix blank archived on Note - module Note - class FixBlankArchived < Rules::Base - - def description - "Fix blank archived on Note" - end - - def call - ::Note.where(archived: nil).update_all(archived: false) - end - end - end - end -end diff --git a/lib/data_cleanup/rules/org/fix_blank_is_other.rb b/lib/data_cleanup/rules/org/fix_blank_is_other.rb deleted file mode 100644 index b255720..0000000 --- a/lib/data_cleanup/rules/org/fix_blank_is_other.rb +++ /dev/null @@ -1,16 +0,0 @@ -module DataCleanup - module Rules - module Org - class FixBlankIsOther < Rules::Base - - def description - "Fix nil values for is_other on Org" - end - - def call - ::Org.where(is_other: nil).update_all(is_other: false) - end - end - end - end -end diff --git a/lib/data_cleanup/rules/org/fix_blank_language.rb b/lib/data_cleanup/rules/org/fix_blank_language.rb index eb43178..b738e8a 100644 --- a/lib/data_cleanup/rules/org/fix_blank_language.rb +++ b/lib/data_cleanup/rules/org/fix_blank_language.rb @@ -12,7 +12,7 @@ end def call - ids = Org.where(language: nil).pluck(:id) + ids = ::Org.where(language: nil).pluck(:id) log("Setting language to #{DEFAULT_LANGUAGE} for Orgs: #{ids}") ::Org.where(language: nil).update_all(language_id: DEFAULT_LANGUAGE.id) end diff --git a/lib/data_cleanup/rules/plan/fix_blank_title.rb b/lib/data_cleanup/rules/plan/fix_blank_title.rb index d0a08df..0c1f594 100644 --- a/lib/data_cleanup/rules/plan/fix_blank_title.rb +++ b/lib/data_cleanup/rules/plan/fix_blank_title.rb @@ -10,7 +10,7 @@ def call ids = ::Plan.where(title: [nil, '']).ids ::Plan.find(ids).each do |plan| - info("Adding default title to Plan##{plan.id}") + log("Adding default title to Plan##{plan.id}") plan.update(title: "My plan (#{plan.template.title})") end end diff --git a/lib/data_cleanup/rules/section/fix_nil_published.rb b/lib/data_cleanup/rules/section/fix_nil_published.rb deleted file mode 100644 index cb75525..0000000 --- a/lib/data_cleanup/rules/section/fix_nil_published.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true -module DataCleanup - module Rules - # Fix nil published on Section - module Section - class FixNilPublished < Rules::Base - - def description - "Fix nil published on Section" - end - - def call - ::Section.where(published: nil).update_all(published: false) - end - end - end - end -end diff --git a/lib/tasks/heal_invalid_records.rake b/lib/tasks/heal_invalid_records.rake index 9842327..f84dfc0 100644 --- a/lib/tasks/heal_invalid_records.rake +++ b/lib/tasks/heal_invalid_records.rake @@ -20,11 +20,12 @@ klass_name = rule_path.split("rules/").last.gsub(".rb", '').classify model_name = klass_name.split("::").first opt, models = ARGV[1].to_s.split("=") - case opt - when 'INCLUDE' + if opt.present? && opt =='INCLUDE' next unless model_name.in?(models.split(",")) - when 'EXCLUDE' + elsif opt.present? && opt =='EXCLUDE' next if model_name.in?(models.split(",")) + elsif opt.blank? + # :noop: else raise ArgumentError, "Unknown option: #{opt}" end diff --git a/spec/factories/guidance_groups.rb b/spec/factories/guidance_groups.rb index 82c7b09..627cff7 100644 --- a/spec/factories/guidance_groups.rb +++ b/spec/factories/guidance_groups.rb @@ -4,8 +4,8 @@ # # id :integer not null, primary key # name :string -# optional_subset :boolean -# published :boolean +# optional_subset :boolean default(FALSE), not null +# published :boolean default(FALSE), not null # created_at :datetime not null # updated_at :datetime not null # org_id :integer diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb index 5aa5919..3fcf2b3 100644 --- a/spec/factories/notes.rb +++ b/spec/factories/notes.rb @@ -3,7 +3,7 @@ # Table name: notes # # id :integer not null, primary key -# archived :boolean +# archived :boolean default(FALSE), not null # archived_by :integer # text :text # created_at :datetime diff --git a/spec/factories/orgs.rb b/spec/factories/orgs.rb index c4477f6..2945f18 100644 --- a/spec/factories/orgs.rb +++ b/spec/factories/orgs.rb @@ -10,7 +10,7 @@ # feedback_email_msg :text # feedback_email_subject :string # feedback_enabled :boolean default(FALSE) -# is_other :boolean +# is_other :boolean default(FALSE), not null # links :text # logo_file_name :string # logo_name :string