# frozen_string_literal: true class MultiSport < ActiveRecord::Migration[7.2] def up rename_column :teams, :sport, :sport_key rename_column :matches, :sport, :sport_key change_column_default :teams, :sport_key, from: "volleyball", to: "pallavolo" change_column_default :matches, :sport_key, from: "volleyball", to: "pallavolo" execute <<~SQL.squish UPDATE teams SET sport_key = 'pallavolo' WHERE sport_key = 'volleyball' OR sport_key IS NULL OR sport_key = ''; UPDATE matches SET sport_key = 'pallavolo' WHERE sport_key = 'volleyball' OR sport_key IS NULL OR sport_key = ''; SQL add_column :matches, :overlay_kind, :string add_column :score_states, :board_type, :string, null: false, default: "volley" add_column :score_states, :data, :jsonb, null: false, default: {} execute <<~SQL.squish UPDATE matches SET scoring_rules = scoring_rules || jsonb_build_object('sets_to_win', sets_to_win) WHERE sets_to_win IS NOT NULL AND NOT (scoring_rules ? 'sets_to_win'); SQL execute <<~SQL.squish UPDATE score_states ss SET board_type = 'volley' FROM stream_sessions s JOIN matches m ON m.id = s.match_id WHERE ss.stream_session_id = s.id; SQL end def down execute <<~SQL.squish UPDATE teams SET sport_key = 'volleyball' WHERE sport_key = 'pallavolo'; UPDATE matches SET sport_key = 'volleyball' WHERE sport_key = 'pallavolo'; SQL change_column_default :teams, :sport_key, from: "pallavolo", to: "volleyball" change_column_default :matches, :sport_key, from: "pallavolo", to: "volleyball" rename_column :teams, :sport_key, :sport rename_column :matches, :sport_key, :sport remove_column :matches, :overlay_kind remove_column :score_states, :board_type remove_column :score_states, :data end end