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
TypeScript
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;
}