import { MigrationInterface, QueryRunner } from 'typeorm';

/**
 * A2UI 批量导入预览允许最多 500 行 × 30 列 × 200 字符，UTF-8 下
 * 很容易超过 MySQL TEXT（64KB）列容量。把 ai_reviews.sections_json
 * 扩为 LONGTEXT，与服务端 12MB 预览上限保持一致。
 */
export class EnlargeAiReviewSections1784900000000 implements MigrationInterface {
  async up(queryRunner: QueryRunner): Promise<void> {
    if (!(await queryRunner.hasTable('ai_reviews'))) return;
    const table = await queryRunner.getTable('ai_reviews');
    const column = table?.columns.find((item) => item.name === 'sections_json');
    const columnType = String(column?.type ?? '').toLowerCase();
    if (columnType === 'longtext') return;
    if (queryRunner.connection.options.type === 'mysql') {
      await queryRunner.query('ALTER TABLE ai_reviews MODIFY sections_json LONGTEXT');
    }
    // SQLite TEXT 无长度上限，无需变更。
  }

  async down(_queryRunner: QueryRunner): Promise<void> {
    // 改回 TEXT 可能截断已有大预览数据，不回滚列类型。
  }
}
