Catalogo sport in YAML, board implicito, engine per volley/basket/timed/racket/timer/generic, regia e app Android allineate. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.8 KiB
Ruby
53 lines
1.8 KiB
Ruby
# 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
|