cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
97 lines • 3.23 kB
TypeScript
/**
* Фабрика для создания миграций
*/
import { IMigration, IMigrationFactory, MigrationResult, MigrationContext, SchemaMigrationConfig, DataMigrationConfig } from '../types/migration-interfaces';
import { ICSElement } from '../types/interfaces';
export declare class MigrationFactory implements IMigrationFactory {
/**
* Создает миграцию схемы
*/
createSchemaMigration(config: SchemaMigrationConfig & {
id: string;
version: string;
description: string;
}): IMigration;
/**
* Создает миграцию данных
*/
createDataMigration(config: DataMigrationConfig & {
id: string;
version: string;
description: string;
}): IMigration;
/**
* Создает кастомную миграцию
*/
createCustomMigration(config: {
id: string;
version: string;
description: string;
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;
/**
* Создает миграцию для добавления поля
*/
createAddFieldMigration(config: {
id: string;
version: string;
schemaName: string;
fieldName: string;
fieldType: string;
defaultValue?: any;
required?: boolean;
}): IMigration;
/**
* Создает миграцию для удаления поля
*/
createRemoveFieldMigration(config: {
id: string;
version: string;
schemaName: string;
fieldName: string;
}): IMigration;
/**
* Создает миграцию для переименования поля
*/
createRenameFieldMigration(config: {
id: string;
version: string;
schemaName: string;
oldFieldName: string;
newFieldName: string;
}): IMigration;
/**
* Создает миграцию для изменения типа поля
*/
createChangeFieldTypeMigration(config: {
id: string;
version: string;
schemaName: string;
fieldName: string;
oldType: string;
newType: string;
transformer?: (value: any) => any;
}): IMigration;
/**
* Создает миграцию для создания индекса
*/
createCreateIndexMigration(config: {
id: string;
version: string;
schemaName: string;
indexName: string;
fields: string[];
unique?: boolean;
}): IMigration;
/**
* Получает элементы для миграции из контекста
*/
static getElementsForMigration(context: MigrationContext, config: DataMigrationConfig): Promise<ICSElement[]>;
}
export declare const migrationFactory: MigrationFactory;
//# sourceMappingURL=MigrationFactory.d.ts.map