import { Decimal } from '@prisma/client/runtime/library';

/**
 * 全局统计仓储接口
 * 用于存储和更新累计统计数据
 */
export const GLOBAL_STATS_REPOSITORY = Symbol('GLOBAL_STATS_REPOSITORY');

export interface GlobalStatsData {
  id?: bigint;
  statsKey: string;
  totalPlantingCount: number;
  totalOrderCount: number;
  totalPlantingAmount: Decimal;
  totalUserCount: number;
  totalProvinceCompanyCount: number;
  totalCityCompanyCount: number;
  createdAt?: Date;
  updatedAt?: Date;
}

export interface IGlobalStatsRepository {
  /**
   * 获取全局统计数据
   */
  getGlobalStats(): Promise<GlobalStatsData>;

  /**
   * 增加认种数量
   */
  incrementPlanting(treeCount: number, amount: Decimal): Promise<GlobalStatsData>;

  /**
   * 增加订单数量
   */
  incrementOrder(): Promise<GlobalStatsData>;

  /**
   * 增加用户数量
   */
  incrementUser(): Promise<GlobalStatsData>;

  /**
   * 增加省公司数量
   */
  incrementProvinceCompany(): Promise<GlobalStatsData>;

  /**
   * 增加市公司数量
   */
  incrementCityCompany(): Promise<GlobalStatsData>;

  /**
   * 批量更新统计数据
   */
  updateStats(updates: Partial<GlobalStatsData>): Promise<GlobalStatsData>;
}
