import db from '../config/database';
import { logger } from '../utils/logger';

/**
 * [BIZ_SYNC_01] 商品同步状态追踪服务
 * @description 核心逻辑：记录商品在多平台间的同步状态、原始链接与目标 ID。
 */
export class SyncService {
  private static TABLE_NAME = 'cf_sync_status';

  /**
   * 初始化数据库表
   */
  static async initTable() {
    const hasSyncTable = await db.schema.hasTable(this.TABLE_NAME);
    if (!hasSyncTable) {
      logger.info(`📦 Creating ${this.TABLE_NAME} table...`);
      await db.schema.createTable(this.TABLE_NAME, (table) => {
        table.increments('id').primary();
        table.string('originalUrl', 1000).notNullable();
        table.string('platform', 50).notNullable();
        table.string('status', 20).defaultTo('pending'); // pending, published, failed
        table.string('platformProductId', 100);
        table.json('productData');
        table.timestamps(true, true);
        table.index(['originalUrl', 'platform']);
      });
      logger.info(`✅ Table ${this.TABLE_NAME} created`);
    }
  }

  /**
   * 记录同步状态
   */
  static async recordSync(data: {
    originalUrl: string;
    platform: string;
    status: string;
    platformProductId?: string;
    productData?: any;
  }) {
    return await db(this.TABLE_NAME).insert({
      ...data,
      productData: data.productData ? JSON.stringify(data.productData) : null
    });
  }
}
