-- Migrate existing matches table to expected columns

-- Add columns if they don't exist
ALTER TABLE IF EXISTS matches
  ADD COLUMN IF NOT EXISTS player_a_id INT NULL,
  ADD COLUMN IF NOT EXISTS player_b_id INT NULL,
  ADD COLUMN IF NOT EXISTS court TEXT NULL,
  ADD COLUMN IF NOT EXISTS start_time TIMESTAMP NULL,
  ADD COLUMN IF NOT EXISTS score_a INT NOT NULL DEFAULT 0,
  ADD COLUMN IF NOT EXISTS score_b INT NOT NULL DEFAULT 0,
  ADD COLUMN IF NOT EXISTS finished BOOLEAN NOT NULL DEFAULT FALSE;

-- Optionally add FKs if participants table exists
DO $$
BEGIN
  IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name='participants') THEN
    BEGIN
      ALTER TABLE matches
        ADD CONSTRAINT IF NOT EXISTS matches_player_a_fk FOREIGN KEY (player_a_id) REFERENCES participants(id) ON DELETE SET NULL,
        ADD CONSTRAINT IF NOT EXISTS matches_player_b_fk FOREIGN KEY (player_b_id) REFERENCES participants(id) ON DELETE SET NULL;
    EXCEPTION WHEN duplicate_object THEN
      -- ignore if constraints already exist
      NULL;
    END;
  END IF;
END $$;

-- Ensure finished default is respected on existing rows
UPDATE matches SET finished = COALESCE(finished, FALSE);
UPDATE matches SET score_a = COALESCE(score_a, 0);
UPDATE matches SET score_b = COALESCE(score_b, 0);
