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.
108 lines (107 loc) • 4.93 kB
TypeScript
import { Client, Databases, Storage, type Models } from "node-appwrite";
import { type AppwriteConfig, type AppwriteFunction, type Specification } from "appwrite-utils";
import { type AfterImportActions, type ConverterFunctions, type ValidationRules } from "appwrite-utils";
import { type TransferOptions } from "./migrations/transfer.js";
import type { DatabaseAdapter } from './adapters/DatabaseAdapter.js';
import { type ValidationResult } from "./config/configValidation.js";
import type { DatabaseSelection, BucketSelection } from "./shared/selectionDialogs.js";
export interface SetupOptions {
databases?: Models.Database[];
collections?: string[];
doBackup?: boolean;
wipeDatabase?: boolean;
wipeCollections?: boolean;
wipeDocumentStorage?: boolean;
wipeUsers?: boolean;
transferUsers?: boolean;
generateSchemas?: boolean;
importData?: boolean;
checkDuplicates?: boolean;
shouldWriteFile?: boolean;
}
export declare class UtilsController {
private static instance;
private isInitialized;
/**
* Get the UtilsController singleton instance
*/
static getInstance(currentUserDir: string, directConfig?: {
appwriteEndpoint?: string;
appwriteProject?: string;
appwriteKey?: string;
}): UtilsController;
/**
* Clear the singleton instance (useful for testing)
*/
static clearInstance(): void;
private appwriteFolderPath?;
private appwriteConfigPath?;
private currentUserDir;
config?: AppwriteConfig;
appwriteServer?: Client;
database?: Databases;
storage?: Storage;
adapter?: DatabaseAdapter;
converterDefinitions: ConverterFunctions;
validityRuleDefinitions: ValidationRules;
afterImportActionsDefinitions: AfterImportActions;
constructor(currentUserDir: string, directConfig?: {
appwriteEndpoint?: string;
appwriteProject?: string;
appwriteKey?: string;
});
init(options?: {
validate?: boolean;
strictMode?: boolean;
useSession?: boolean;
sessionCookie?: string;
preferJson?: boolean;
}): Promise<void>;
reloadConfig(): Promise<void>;
ensureDatabaseConfigBucketsExist(databases?: Models.Database[]): Promise<void>;
ensureDatabasesExist(databases?: Models.Database[]): Promise<void>;
ensureCollectionsExist(database: Models.Database, collections?: Models.Collection[]): Promise<void>;
getDatabasesByIds(ids: string[]): Promise<Models.Database[] | undefined>;
fetchAllBuckets(): Promise<{
buckets: Models.Bucket[];
}>;
wipeOtherDatabases(databasesToKeep: Models.Database[]): Promise<void>;
wipeUsers(): Promise<void>;
backupDatabase(database: Models.Database, format?: 'json' | 'zip'): Promise<void>;
listAllFunctions(): Promise<Models.Function[]>;
findFunctionDirectories(): Promise<Map<any, any>>;
deployFunction(functionName: string, functionPath?: string, functionConfig?: AppwriteFunction): Promise<void>;
syncFunctions(): Promise<void>;
wipeDatabase(database: Models.Database, wipeBucket?: boolean): Promise<void>;
wipeBucketFromDatabase(database: Models.Database): Promise<void>;
wipeCollection(database: Models.Database, collection: Models.Collection): Promise<void>;
wipeDocumentStorage(bucketId: string): Promise<void>;
createOrUpdateCollectionsForDatabases(databases: Models.Database[], collections?: Models.Collection[]): Promise<void>;
createOrUpdateCollections(database: Models.Database, deletedCollections?: {
collectionId: string;
collectionName: string;
}[], collections?: Models.Collection[]): Promise<void>;
generateSchemas(): Promise<void>;
importData(options?: SetupOptions): Promise<void>;
synchronizeConfigurations(databases?: Models.Database[], config?: AppwriteConfig, databaseSelections?: DatabaseSelection[], bucketSelections?: BucketSelection[]): Promise<void>;
selectivePull(databaseSelections: DatabaseSelection[], bucketSelections: BucketSelection[]): Promise<void>;
selectivePush(databaseSelections: DatabaseSelection[], bucketSelections: BucketSelection[]): Promise<void>;
syncDb(databases?: Models.Database[], collections?: Models.Collection[]): Promise<void>;
getAppwriteFolderPath(): string | undefined;
transferData(options: TransferOptions): Promise<void>;
updateFunctionSpecifications(functionId: string, specification: Specification): Promise<void>;
/**
* Validates the current configuration for collections/tables conflicts
*/
validateConfiguration(strictMode?: boolean): Promise<ValidationResult>;
/**
* Get current session information for debugging/logging purposes
* Delegates to ConfigManager for session info
*/
getSessionInfo(): Promise<{
hasSession: boolean;
authMethod?: string;
email?: string;
expiresAt?: string;
}>;
}