import { SystemMaintenanceEntity } from '../entities/system-maintenance.entity';

/**
 * 系统维护公告仓储接口
 */
export interface ISystemMaintenanceRepository {
  /**
   * 创建维护公告
   */
  create(entity: SystemMaintenanceEntity): Promise<SystemMaintenanceEntity>;

  /**
   * 根据ID查找
   */
  findById(id: string): Promise<SystemMaintenanceEntity | null>;

  /**
   * 查找当前激活的维护公告
   */
  findActiveMaintenance(): Promise<SystemMaintenanceEntity | null>;

  /**
   * 查找所有维护公告（分页）
   */
  findAll(params: {
    limit: number;
    offset: number;
  }): Promise<{ items: SystemMaintenanceEntity[]; total: number }>;

  /**
   * 更新维护公告
   */
  update(entity: SystemMaintenanceEntity): Promise<SystemMaintenanceEntity>;

  /**
   * 删除维护公告
   */
  delete(id: string): Promise<void>;

  /**
   * 停用所有其他激活的维护公告（确保同时只有一个激活）
   */
  deactivateAll(excludeId?: string): Promise<void>;
}

export const SYSTEM_MAINTENANCE_REPOSITORY = Symbol('ISystemMaintenanceRepository');
