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.

108 lines (107 loc) 4.93 kB
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; }>; }