Files
MatchLiveTv/backend/db/migrate/20260603121000_move_youtube_credentials_to_clubs.rb
Emiliano Frascaro 1f273f849d Aggiunge modulo Replay, Garage dev e YouTube a livello società.
Pipeline registrazione/upload con storage S3, archivio web e app, proxy replay
per il browser, OAuth YouTube sulla pagina club (Premium Full) e footer legale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 07:53:11 +02:00

58 lines
1.8 KiB
Ruby

# frozen_string_literal: true
class MoveYoutubeCredentialsToClubs < ActiveRecord::Migration[7.2]
def up
unless column_exists?(:youtube_credentials, :club_id)
add_reference :youtube_credentials, :club, type: :uuid, foreign_key: true
end
if column_exists?(:youtube_credentials, :team_id)
say_with_time "Associa credenziali YouTube alle società" do
execute <<~SQL.squish
UPDATE youtube_credentials yc
SET club_id = t.club_id
FROM teams t
WHERE t.id = yc.team_id AND yc.club_id IS NULL
SQL
end
execute <<~SQL.squish
DELETE FROM youtube_credentials yc
USING youtube_credentials newer
WHERE yc.club_id = newer.club_id
AND yc.id <> newer.id
AND yc.updated_at < newer.updated_at
SQL
change_column_null :youtube_credentials, :club_id, false
remove_index :youtube_credentials, :team_id, if_exists: true
remove_reference :youtube_credentials, :team, foreign_key: true
end
unless index_exists?(:youtube_credentials, :club_id)
add_index :youtube_credentials, :club_id, unique: true
end
end
def down
return unless column_exists?(:youtube_credentials, :club_id)
add_reference :youtube_credentials, :team, type: :uuid, foreign_key: true unless column_exists?(:youtube_credentials, :team_id)
execute <<~SQL.squish
UPDATE youtube_credentials yc
SET team_id = (
SELECT t.id FROM teams t
WHERE t.club_id = yc.club_id
ORDER BY t.created_at
LIMIT 1
)
SQL
change_column_null :youtube_credentials, :team_id, false
remove_index :youtube_credentials, :club_id, if_exists: true
remove_reference :youtube_credentials, :club, foreign_key: true
add_index :youtube_credentials, :team_id, if_not_exists: true
end
end