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.
212 lines (211 loc) • 7.5 kB
TypeScript
import { Storage, type Models } from "node-appwrite";
import { type AppwriteConfig } from "appwrite-utils";
import type { DatabaseAdapter } from "../adapters/DatabaseAdapter.js";
import type { DatabaseSelection, BucketSelection } from "../shared/selectionDialogs.js";
export declare class AppwriteToX {
config: AppwriteConfig;
storage: Storage;
updatedConfig: AppwriteConfig;
collToAttributeMap: Map<string, ({
key: string;
required: boolean;
type: "string";
size: number;
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
encrypt?: boolean | undefined;
} | {
key: string;
required: boolean;
type: "integer";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
min?: number | undefined;
max?: number | undefined;
xdefault?: number | null | undefined;
} | {
key: string;
required: boolean;
type: "double";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
min?: number | undefined;
max?: number | undefined;
xdefault?: number | null | undefined;
} | {
key: string;
required: boolean;
type: "float";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
min?: number | undefined;
max?: number | undefined;
xdefault?: number | null | undefined;
} | {
key: string;
required: boolean;
type: "boolean";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: boolean | null | undefined;
} | {
key: string;
required: boolean;
type: "datetime";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
} | {
key: string;
required: boolean;
type: "email";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
} | {
key: string;
required: boolean;
type: "ip";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
} | {
key: string;
required: boolean;
type: "url";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
} | {
key: string;
required: boolean;
type: "enum";
elements: string[];
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
xdefault?: string | null | undefined;
} | {
key: string;
required: boolean;
type: "relationship";
relatedCollection: string;
relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany";
twoWay: boolean;
onDelete: "setNull" | "cascade" | "restrict";
array?: boolean | undefined;
format?: string | undefined;
status?: string | undefined;
attributes?: string[] | undefined;
orders?: string[] | undefined;
$createdAt?: string | undefined;
$updatedAt?: string | undefined;
error?: string | undefined;
twoWayKey?: string | undefined;
side?: "parent" | "child" | undefined;
importMapping?: {
originalIdField: string;
targetField?: string | undefined;
} | undefined;
})[]>;
appwriteFolderPath: string;
adapter?: DatabaseAdapter;
apiMode?: 'legacy' | 'tablesdb';
databaseApiModes: Map<string, "legacy" | "tablesdb">;
constructor(config: AppwriteConfig, appwriteFolderPath: string, storage: Storage);
/**
* Initialize adapter for database operations with API mode detection
*/
private initializeAdapter;
private ensureClientInitialized;
parsePermissionString: (permissionString: string) => {
permission: string;
target: string;
};
parsePermissionsArray: (permissions: string[]) => ({
permission: string;
target: string;
} | {
permission: string;
target: string;
})[];
updateCollectionConfigAttributes: (collection: Models.Collection) => void;
/**
* Fetch collections/tables using the appropriate adapter or legacy client
*/
private fetchCollectionsOrTables;
/**
* Get collection/table using the appropriate adapter or legacy client
*/
private getCollectionOrTable;
/**
* Detect API mode for a specific database by testing adapter capabilities
*/
private detectDatabaseApiMode;
/**
* Get API mode context for schema generation
*/
private getSchemaGeneratorApiContext;
appwriteSync(config: AppwriteConfig, databases?: Models.Database[], databaseSelections?: DatabaseSelection[], bucketSelections?: BucketSelection[]): Promise<void>;
toSchemas(databases?: Models.Database[], databaseSelections?: DatabaseSelection[], bucketSelections?: BucketSelection[]): Promise<void>;
}