/**
 * Custom card designs (card designer feature).
 *
 * One row per user-designed card. Designer-specific fields live here
 * (frame, artwork, actions); on save we also upsert a matching catalog
 * row in `cards` (game='Custom') + a `user_cards` row so designed cards
 * appear in My Cards, lists, and decks through the normal joins.
 */
export const up = (pgm) => {
  pgm.sql(`
    CREATE TABLE IF NOT EXISTS custom_cards (
      id SERIAL PRIMARY KEY,
      user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
      card_id INTEGER REFERENCES cards(id) ON DELETE SET NULL,
      name VARCHAR(255) NOT NULL,
      mana_cost VARCHAR(50),
      card_type VARCHAR(255),
      rarity VARCHAR(50),
      rules_text TEXT,
      actions TEXT,
      power VARCHAR(10),
      toughness VARCHAR(10),
      frame_id VARCHAR(50) DEFAULT 'classic',
      artwork_url TEXT,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
  `);

  pgm.sql(`
    CREATE INDEX IF NOT EXISTS idx_custom_cards_user_id
    ON custom_cards(user_id)
  `);

  pgm.sql(`
    CREATE INDEX IF NOT EXISTS idx_custom_cards_card_id
    ON custom_cards(card_id)
  `);
};

export const down = (pgm) => {
  pgm.sql(`DROP TABLE IF EXISTS custom_cards CASCADE`);
};
