48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { ProviderMetrics, ProviderProject, ProviderSecrets, SchemaDefinition } from '../../core/types.js';
|
|
import { logger } from '../../lib/logger.js';
|
|
|
|
export class AppwriteClient {
|
|
async createProject(name: string, secrets: ProviderSecrets): Promise<ProviderProject> {
|
|
logger.info('Appwrite create project requested', { name, endpoint: secrets.endpoint });
|
|
return {
|
|
externalId: `appwrite_${crypto.randomUUID()}`,
|
|
dashboardUrl: `${secrets.endpoint}/console/project`,
|
|
};
|
|
}
|
|
|
|
async deleteProject(externalId: string, secrets: ProviderSecrets): Promise<void> {
|
|
logger.info('Appwrite delete project requested', { externalId, endpoint: secrets.endpoint });
|
|
}
|
|
|
|
async applySchema(externalId: string, schema: SchemaDefinition, secrets: ProviderSecrets): Promise<void> {
|
|
logger.info('Appwrite apply schema requested', {
|
|
externalId,
|
|
version: schema.version,
|
|
endpoint: secrets.endpoint,
|
|
});
|
|
}
|
|
|
|
async collectMetrics(externalId: string, secrets: ProviderSecrets): Promise<ProviderMetrics> {
|
|
logger.info('Appwrite metrics requested', { externalId, endpoint: secrets.endpoint });
|
|
return {
|
|
users: 0,
|
|
storageMb: 0,
|
|
requests: 0,
|
|
functions: 0,
|
|
capturedAt: new Date().toISOString(),
|
|
};
|
|
}
|
|
|
|
async rotateSecrets(externalId: string, secrets: ProviderSecrets): Promise<ProviderSecrets> {
|
|
logger.info('Appwrite secrets rotation requested', { externalId, endpoint: secrets.endpoint });
|
|
return {
|
|
...secrets,
|
|
apiKey: `${secrets.apiKey}-rotated`,
|
|
};
|
|
}
|
|
|
|
async healthCheck(secrets: ProviderSecrets): Promise<boolean> {
|
|
logger.info('Appwrite health check requested', { endpoint: secrets.endpoint });
|
|
return true;
|
|
}
|
|
}
|