cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
120 lines • 3.41 kB
TypeScript
/**
* Планировщик миграций для автоматического запуска
*/
import { EventEmitter } from 'events';
import { MigrationRunnerConfig, MigrationExecutionInfo } from './MigrationRunner';
import { IMigrationManager } from '../types/migration-interfaces';
/**
* Триггер для запуска миграций
*/
export type MigrationTrigger = 'startup' | 'scheduled' | 'manual' | 'version_change';
/**
* Конфигурация планировщика
*/
export interface MigrationSchedulerConfig extends MigrationRunnerConfig {
triggers?: MigrationTrigger[];
checkInterval?: number;
initialDelay?: number;
autoStart?: boolean;
maxConcurrentExecutions?: number;
notifications?: {
onStart?: boolean;
onComplete?: boolean;
onError?: boolean;
};
hooks?: {
beforeExecution?: () => Promise<boolean>;
afterExecution?: (result: MigrationExecutionInfo) => Promise<void>;
onError?: (error: Error) => Promise<void>;
};
}
/**
* Информация о задаче миграции
*/
export interface MigrationTask {
id: string;
trigger: MigrationTrigger;
scheduledAt: Date;
startedAt?: Date;
completedAt?: Date;
status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
result?: MigrationExecutionInfo;
error?: string;
}
/**
* Планировщик миграций
*/
export declare class MigrationScheduler extends EventEmitter {
private migrationManager;
private runner;
private config;
private tasks;
private checkTimer?;
private isStarted;
private executionCount;
constructor(migrationManager: IMigrationManager, config?: MigrationSchedulerConfig);
/**
* Настройка обработчиков событий
*/
private setupEventHandlers;
/**
* Запуск планировщика
*/
start(): Promise<void>;
/**
* Остановка планировщика
*/
stop(): Promise<void>;
/**
* Планирование задачи миграции
*/
scheduleTask(trigger: MigrationTrigger): string;
/**
* Выполнение задачи миграции
*/
private executeTask;
/**
* Проверка ожидающих миграций
*/
private checkPendingMigrations;
/**
* Ручной запуск миграций
*/
runNow(): Promise<string>;
/**
* Получение всех задач
*/
getTasks(): MigrationTask[];
/**
* Получение задачи по ID
*/
getTask(taskId: string): MigrationTask | undefined;
/**
* Отмена задачи
*/
cancelTask(taskId: string): Promise<boolean>;
/**
* Очистка старых задач
*/
cleanupTasks(olderThan: Date): number;
/**
* Получение статистики
*/
getStats(): {
totalTasks: number;
pendingTasks: number;
runningTasks: number;
completedTasks: number;
failedTasks: number;
cancelledTasks: number;
};
/**
* Проверка, запущен ли планировщик
*/
isRunning(): boolean;
/**
* Логирование
*/
private log;
}
//# sourceMappingURL=MigrationScheduler.d.ts.map