UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

144 lines 5.34 kB
/** * Декораторы для упрощения создания миграций */ 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