From 5d37e5e0d8dfd9edd2a739672fb8f50673551a12 Mon Sep 17 00:00:00 2001 From: Jacob Cody Wimer Date: Mon, 25 Nov 2024 20:12:36 -0500 Subject: [PATCH] Fixed migration for mat assignment rule --- app/models/mat_assignment_rule.rb | 14 +++++++++++--- ...241027203209_create_mat_assignment_rules.rb | 18 +++++++----------- db/schema.rb | 11 ++++------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/models/mat_assignment_rule.rb b/app/models/mat_assignment_rule.rb index 85cdc29..0e2b57a 100644 --- a/app/models/mat_assignment_rule.rb +++ b/app/models/mat_assignment_rule.rb @@ -1,4 +1,12 @@ class MatAssignmentRule < ApplicationRecord - belongs_to :mat - belongs_to :tournament - end \ No newline at end of file + belongs_to :mat + belongs_to :tournament + + # Ensure default values for JSON fields + # because mysql doesn't allow this + after_initialize do + self.weight_classes ||= [] + self.bracket_positions ||= [] + self.rounds ||= [] + end +end diff --git a/db/migrate/20241027203209_create_mat_assignment_rules.rb b/db/migrate/20241027203209_create_mat_assignment_rules.rb index 1ba57b7..8be911c 100644 --- a/db/migrate/20241027203209_create_mat_assignment_rules.rb +++ b/db/migrate/20241027203209_create_mat_assignment_rules.rb @@ -1,26 +1,22 @@ class CreateMatAssignmentRules < ActiveRecord::Migration[6.1] def up create_table :mat_assignment_rules do |t| - t.references :tournament, null: false, foreign_key: true - t.references :mat, null: false, foreign_key: true - t.json :weight_classes, default: [] - t.json :bracket_positions, default: [] - t.json :rounds, default: [] + t.integer :tournament_id, null: false, foreign_key: true + t.integer :mat_id, null: false, foreign_key: true + t.json :weight_classes # Removed `default: []` + t.json :bracket_positions # Removed `default: []` + t.json :rounds # Removed `default: []` t.timestamps end - # Add unique index on mat_id if it does not already exist + # Add unique index only if it does not already exist add_index :mat_assignment_rules, :mat_id, unique: true unless index_exists?(:mat_assignment_rules, :mat_id) - - # Add index on tournament_id for faster lookups - add_index :mat_assignment_rules, :tournament_id unless index_exists?(:mat_assignment_rules, :tournament_id) end def down - # Remove indexes if they exist + # Remove the unique index if it exists remove_index :mat_assignment_rules, :mat_id if index_exists?(:mat_assignment_rules, :mat_id) - remove_index :mat_assignment_rules, :tournament_id if index_exists?(:mat_assignment_rules, :tournament_id) # Drop the table drop_table :mat_assignment_rules diff --git a/db/schema.rb b/db/schema.rb index 8429c18..ee2d16b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -31,13 +31,12 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_27_203209) do create_table "mat_assignment_rules", force: :cascade do |t| t.integer "tournament_id", null: false t.integer "mat_id", null: false - t.json "weight_classes", default: [] - t.json "bracket_positions", default: [] - t.json "rounds", default: [] + t.json "weight_classes" + t.json "bracket_positions" + t.json "rounds" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["mat_id"], name: "index_mat_assignment_rules_on_mat_id" - t.index ["tournament_id"], name: "index_mat_assignment_rules_on_tournament_id" + t.index ["mat_id"], name: "index_mat_assignment_rules_on_mat_id", unique: true end create_table "matches", force: :cascade do |t| @@ -168,6 +167,4 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_27_203209) do t.index ["weight_id"], name: "index_wrestlers_on_weight_id" end - add_foreign_key "mat_assignment_rules", "mats" - add_foreign_key "mat_assignment_rules", "tournaments" end