# Appwrite Database Collections Definição textual das coleções necessárias no Appwrite Console e um exemplo simples de script JavaScript para criá-las via SDK. ## Collections ### cloud_accounts - **provider**: string (`'github'` | `'cloudflare'`), obrigatório. - **apiKey**: string (armazenada com criptografia no Appwrite), obrigatório. - **label**: string (nome amigável para exibir), obrigatório. ### projects - **name**: string (nome do projeto), obrigatório. - **repoUrl**: string (URL do repositório), obrigatório. - **deployStatus**: string (status do deploy), obrigatório. ### audit_logs - **action**: string (ação executada), obrigatório. - **timestamp**: datetime (instante do evento), obrigatório. - **userId**: string (ID do usuário responsável), obrigatório. ## Script de exemplo (Node.js) O script abaixo usa o SDK do Appwrite para criar as coleções e seus atributos em um database existente. Ajuste as variáveis `APPWRITE_ENDPOINT`, `APPWRITE_PROJECT`, `APPWRITE_API_KEY` e `DATABASE_ID` antes de executar. ```bash npm install appwrite node create-collections.js ``` ```js // create-collections.js import { Client, Databases, ID } from 'appwrite'; const client = new Client() .setEndpoint(process.env.APPWRITE_ENDPOINT || 'https://cloud.appwrite.io/v1') .setProject(process.env.APPWRITE_PROJECT) .setKey(process.env.APPWRITE_API_KEY); const DATABASE_ID = process.env.DATABASE_ID; // ID do banco existente const databases = new Databases(client); async function createCollection({ id, name }) { await databases.createCollection(DATABASE_ID, id, name, [ { type: 'document', roles: [ { role: 'all', permission: 'read' }, { role: 'users', permission: 'create' }, { role: 'users', permission: 'update' }, { role: 'users', permission: 'delete' }, ], }, ]); } async function createStringAttribute(collectionId, key, size = 255, required = true, defaultValue = undefined) { await databases.createStringAttribute(DATABASE_ID, collectionId, key, size, required, defaultValue); } async function createDatetimeAttribute(collectionId, key, required = true) { await databases.createDatetimeAttribute(DATABASE_ID, collectionId, key, required); } async function main() { // cloud_accounts await createCollection({ id: 'cloud_accounts', name: 'Cloud Accounts' }); await createStringAttribute('cloud_accounts', 'provider', 20); await createStringAttribute('cloud_accounts', 'apiKey', 512); await createStringAttribute('cloud_accounts', 'label', 100); // projects await createCollection({ id: 'projects', name: 'Projects' }); await createStringAttribute('projects', 'name', 200); await createStringAttribute('projects', 'repoUrl', 500); await createStringAttribute('projects', 'deployStatus', 100); // audit_logs await createCollection({ id: 'audit_logs', name: 'Audit Logs' }); await createStringAttribute('audit_logs', 'action', 200); await createDatetimeAttribute('audit_logs', 'timestamp'); await createStringAttribute('audit_logs', 'userId', 128); console.log('Collections e atributos criados.'); } main().catch((err) => { console.error('Erro ao criar collections:', err); process.exit(1); }); ```