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.
123 lines (122 loc) • 3.73 kB
TypeScript
import type { AppwriteConfig } from "appwrite-utils";
export interface AppwriteProjectConfig {
projectId: string;
endpoint?: string;
projectName?: string;
settings?: {
services?: Record<string, boolean>;
auth?: {
methods?: Record<string, boolean>;
security?: Record<string, any>;
};
};
functions?: Array<{
$id: string;
name: string;
runtime: string;
entrypoint?: string;
path?: string;
commands?: string;
events?: string[];
}>;
databases?: Array<{
$id: string;
name: string;
enabled?: boolean;
}>;
collections?: Array<{
$id: string;
$permissions?: string[];
databaseId: string;
name: string;
enabled?: boolean;
documentSecurity?: boolean;
attributes: Array<{
key: string;
type: string;
required?: boolean;
array?: boolean;
size?: number;
default?: any;
encrypt?: boolean;
[key: string]: any;
}>;
indexes?: Array<{
key: string;
type: string;
attributes: string[];
orders?: string[];
}>;
}>;
tablesDB?: Array<{
$id: string;
name: string;
enabled?: boolean;
}>;
tables?: Array<{
$id: string;
$permissions?: string[];
databaseId: string;
name: string;
enabled?: boolean;
rowSecurity?: boolean;
columns: Array<{
key: string;
type: string;
required?: boolean;
array?: boolean;
size?: number;
default?: any;
encrypt?: boolean;
unique?: boolean;
[key: string]: any;
}>;
indexes?: Array<{
key: string;
type: string;
attributes: string[];
orders?: string[];
}>;
}>;
buckets?: Array<{
bucketId?: string;
$id?: string;
name: string;
maximumFileSize?: number;
allowedFileExtensions?: string[];
encryption?: boolean;
antiVirus?: boolean;
[key: string]: any;
}>;
}
/**
* Find appwrite.json or appwrite.config.json in current directory or parents
*/
export declare function findAppwriteProjectConfig(startDir?: string): string | null;
/**
* Load and parse appwrite project configuration
*/
export declare function loadAppwriteProjectConfig(configPath?: string): AppwriteProjectConfig | null;
/**
* Detect API mode from project configuration
*/
export declare function detectApiModeFromProject(projectConfig: AppwriteProjectConfig): "legacy" | "tablesdb" | "auto";
/**
* Convert project config to AppwriteConfig format
* @param projectConfig The project config to convert
* @param configPath Optional path to the config file (for resolving relative paths)
* @param existingConfig Optional existing config to merge with
*/
export declare function projectConfigToAppwriteConfig(projectConfig: AppwriteProjectConfig, configPath?: string, existingConfig?: Partial<AppwriteConfig>): Partial<AppwriteConfig>;
/**
* Get collection/table definitions from project config
*/
export declare function getCollectionsFromProject(projectConfig: AppwriteProjectConfig): any[];
/**
* Check if project config indicates TablesDB usage
*/
export declare function isTablesDBProject(projectConfig: AppwriteProjectConfig): boolean;
/**
* Get the appropriate directory name based on project config
*/
export declare function getProjectDirectoryName(projectConfig: AppwriteProjectConfig): "tables" | "collections";