appwrite-utils-cli
Version:
Appwrite Utility Functions to help with database management, data conversion, data import, migrations, and much more. Meant to be used as a CLI tool, I do not recommend installing this in frontend environments.
88 lines (87 loc) • 2.69 kB
TypeScript
import { type AppwriteConfig, type CollectionCreate, type TableCreate, type TableCreateInput } from "appwrite-utils";
import { type ValidationResult } from "./configValidation.js";
/**
* Migration strategy types
*/
export type MigrationStrategy = "full_migration" | "dual_format" | "incremental" | "tables_only";
/**
* Migration plan detailing what will be changed
*/
export interface MigrationPlan {
strategy: MigrationStrategy;
collectionsToMigrate: CollectionMigrationItem[];
collectionsToKeep: CollectionCreate[];
tablesToCreate: TableCreate[];
expectedChanges: MigrationChange[];
estimatedComplexity: "low" | "medium" | "high";
warnings: string[];
recommendations: string[];
}
/**
* Individual collection migration details
*/
export interface CollectionMigrationItem {
collection: CollectionCreate;
index: number;
newTable: TableCreate;
changes: string[];
warnings: string[];
}
/**
* Migration change description
*/
export interface MigrationChange {
type: "add" | "remove" | "modify" | "rename";
description: string;
impact: "low" | "medium" | "high";
location: string;
}
/**
* Migration execution result
*/
export interface MigrationResult {
success: boolean;
newConfig: AppwriteConfig;
changes: MigrationChange[];
validation: ValidationResult;
warnings: string[];
errors: string[];
}
/**
* Migration options
*/
export interface MigrationOptions {
preserveOriginal?: boolean;
validateResult?: boolean;
dryRun?: boolean;
backupConfig?: boolean;
targetDirectory?: string;
}
/**
* Creates a migration plan for converting collections to tables
*/
export declare function createMigrationPlan(config: AppwriteConfig, strategy?: MigrationStrategy, specificCollections?: string[]): MigrationPlan;
/**
* Executes a migration plan
*/
export declare function executeMigrationPlan(config: AppwriteConfig, plan: MigrationPlan, options?: MigrationOptions): MigrationResult;
/**
* Converts a single collection to table format
*/
export declare function convertCollectionToTable(collection: CollectionCreate): TableCreateInput;
/**
* Utility function to migrate collections to tables with simple interface
*/
export declare function migrateCollectionsToTables(config: AppwriteConfig, options?: {
strategy?: MigrationStrategy;
specificCollections?: string[];
validateResult?: boolean;
dryRun?: boolean;
}): MigrationResult;
/**
* Saves migration results to files
*/
export declare function saveMigrationResult(result: MigrationResult, outputPath: string, options?: {
createBackup?: boolean;
originalConfigPath?: string;
}): Promise<void>;