cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
144 lines • 5.34 kB
TypeScript
/**
* Декораторы для упрощения создания миграций
*/
import { IMigration, MigrationResult, MigrationContext, MigrationType } from '../types/migration-interfaces';
/**
* Реестр миграций
*/
export declare class MigrationRegistry {
private static migrations;
static register(migration: IMigration): void;
static get(id: string): IMigration | undefined;
static getAll(): IMigration[];
static clear(): void;
}
/**
* Декоратор для класса миграции
*/
export declare function Migration(config: {
id: string;
version: string;
description: string;
type?: MigrationType;
dependencies?: string[];
}): <T extends {
new (...args: any[]): any;
}>(constructor: T) => T;
/**
* Декоратор для методов миграции
*/
export declare function Up(_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
/**
* Декоратор для методов отката
*/
export declare function Down(_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
/**
* Декоратор для проверки возможности применения
*/
export declare function CanApply(_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
/**
* Декоратор для проверки возможности отката
*/
export declare function CanRollback(_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
/**
* Декоратор для валидации
*/
export declare function Validate(_target: any, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
/**
* Декоратор для зависимостей
*/
export declare function DependsOn(...migrationIds: string[]): (target: any, _propertyKey?: string) => void;
/**
* Декоратор для типа миграции
*/
export declare function Type(type: MigrationType): (target: any, _propertyKey?: string) => void;
/**
* Базовый класс для миграций
*/
export declare abstract class BaseMigration {
abstract up(context: MigrationContext): Promise<MigrationResult>;
abstract down(context: MigrationContext): Promise<MigrationResult>;
canApply(_context: MigrationContext): Promise<boolean>;
canRollback(_context: MigrationContext): Promise<boolean>;
validate(_context: MigrationContext): Promise<boolean>;
protected createResult(success: boolean, options?: {
error?: string;
message?: string;
processedCount?: number;
executionTime?: number;
metadata?: Record<string, any>;
}): MigrationResult;
protected measureTime<T>(operation: () => Promise<T>): Promise<{
result: T;
executionTime: number;
}>;
}
/**
* Миграция схемы
*/
export declare abstract class SchemaMigration extends BaseMigration {
protected abstract schemaName: string;
protected abstract oldVersion: string;
protected abstract newVersion: string;
up(context: MigrationContext): Promise<MigrationResult>;
down(context: MigrationContext): Promise<MigrationResult>;
protected abstract updateSchema(context: MigrationContext): Promise<void>;
protected abstract rollbackSchema(context: MigrationContext): Promise<void>;
}
/**
* Миграция данных
*/
export declare abstract class DataMigration extends BaseMigration {
protected abstract elementType?: string;
protected batchSize: number;
up(context: MigrationContext): Promise<MigrationResult>;
down(context: MigrationContext): Promise<MigrationResult>;
protected abstract transformData(context: MigrationContext): Promise<{
processedCount: number;
}>;
protected abstract rollbackData(context: MigrationContext): Promise<{
processedCount: number;
}>;
}
/**
* Утилиты для создания миграций
*/
export declare class MigrationUtils {
/**
* Создает простую миграцию
*/
static simple(config: {
id: string;
version: string;
description: string;
type?: MigrationType;
dependencies?: string[];
up: (context: MigrationContext) => Promise<MigrationResult>;
down: (context: MigrationContext) => Promise<MigrationResult>;
canApply?: (context: MigrationContext) => Promise<boolean>;
canRollback?: (context: MigrationContext) => Promise<boolean>;
validate?: (context: MigrationContext) => Promise<boolean>;
}): IMigration;
/**
* Создает миграцию только для применения (без отката)
*/
static upOnly(config: {
id: string;
version: string;
description: string;
type?: MigrationType;
dependencies?: string[];
up: (context: MigrationContext) => Promise<MigrationResult>;
}): IMigration;
/**
* Создает миграцию-заглушку
*/
static noop(config: {
id: string;
version: string;
description: string;
type?: MigrationType;
dependencies?: string[];
}): IMigration;
}
//# sourceMappingURL=MigrationDecorators.d.ts.map