UNPKG

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.

148 lines (147 loc) 4.13 kB
export interface ComprehensiveTransferOptions { sourceEndpoint: string; sourceProject: string; sourceKey: string; targetEndpoint: string; targetProject: string; targetKey: string; transferUsers?: boolean; transferTeams?: boolean; transferDatabases?: boolean; transferBuckets?: boolean; transferFunctions?: boolean; concurrencyLimit?: number; dryRun?: boolean; } export interface TransferResults { users: { transferred: number; skipped: number; failed: number; }; teams: { transferred: number; skipped: number; failed: number; }; databases: { transferred: number; skipped: number; failed: number; }; buckets: { transferred: number; skipped: number; failed: number; }; functions: { transferred: number; skipped: number; failed: number; }; totalTime: number; } export declare class ComprehensiveTransfer { private options; private sourceClient; private targetClient; private sourceUsers; private targetUsers; private sourceTeams; private targetTeams; private sourceDatabases; private targetDatabases; private sourceStorage; private targetStorage; private sourceFunctions; private targetFunctions; private limit; private userLimit; private fileLimit; private results; private startTime; private tempDir; private cachedMaxFileSize?; private sourceAdapter?; private targetAdapter?; constructor(options: ComprehensiveTransferOptions); execute(): Promise<TransferResults>; private transferAllUsers; private transferAllTeams; private transferAllDatabases; /** * Phase 1: Create database structure (collections, attributes, indexes) without transferring documents */ private createDatabaseStructure; /** * Phase 2: Transfer documents to all collections in the database */ private transferDatabaseDocuments; private transferAllBuckets; private createBucketWithFallback; private transferBucketFiles; private validateAndDownloadFile; private transferAllFunctions; private downloadFunction; /** * Helper method to fetch all collections from a database */ private fetchAllCollections; /** * Helper method to fetch all buckets with pagination */ private fetchAllBuckets; /** * Helper method to parse attribute objects (simplified version of parseAttribute) */ private parseAttribute; /** * Helper method to create collection attributes with status checking */ private createCollectionAttributesWithStatusCheck; /** * Helper method to create collection indexes with status checking */ private createCollectionIndexesWithStatusCheck; /** * Helper method to transfer documents between databases using bulk operations with content and permission-based filtering */ private transferDocumentsBetweenDatabases; /** * Fetch target documents by IDs in batches to check existence and permissions */ private fetchTargetDocumentsBatch; /** * Transfer documents using bulk operations with proper batch size handling */ private transferDocumentsBulk; /** * Direct HTTP implementation of bulk upsert API */ private bulkUpsertDocuments; /** * Transfer documents individually with rate limiting */ private transferDocumentsIndividual; /** * Update documents individually with content and/or permission changes */ private updateDocumentsIndividual; /** * Utility method to chunk arrays */ private chunkArray; /** * Helper method to fetch all teams with pagination */ private fetchAllTeams; /** * Helper method to fetch all memberships for a team with pagination */ private fetchAllMemberships; /** * Helper method to transfer team memberships */ private transferTeamMemberships; private printSummary; }