import { Client, Databases } from 'node-appwrite'; import { readFileSync } from 'fs'; import { resolve, dirname } from 'path'; import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); function loadEnv() { const envPath = resolve(__dirname, '..', '.env'); const lines = readFileSync(envPath, 'utf-8').split('\n'); for (const line of lines) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith('#')) continue; const eqIdx = trimmed.indexOf('='); if (eqIdx === -1) continue; const key = trimmed.slice(0, eqIdx).trim(); const value = trimmed.slice(eqIdx + 1).trim(); process.env[key] = value; } } loadEnv(); const ENDPOINT = process.env.APPWRITE_ENDPOINT; const PROJECT_ID = process.env.VITE_APPWRITE_PROJECT_ID; const API_KEY = process.env.APPWRITE_API_KEY; const DATABASE_ID = process.env.VITE_APPWRITE_DATABASE_ID || 'defekttrack_db'; if (!ENDPOINT || !PROJECT_ID || !API_KEY || API_KEY === 'YOUR_API_KEY_HERE') { console.error('Bitte APPWRITE_ENDPOINT, VITE_APPWRITE_PROJECT_ID und APPWRITE_API_KEY in .env setzen.'); process.exit(1); } const client = new Client().setEndpoint(ENDPOINT).setProject(PROJECT_ID).setKey(API_KEY); const databases = new Databases(client); const COLLECTION_ID = 'assets'; async function migrate() { console.log('Migration: Füge bearbeitungsStatus Feld zur assets Collection hinzu...\n'); try { await databases.createStringAttribute(DATABASE_ID, COLLECTION_ID, 'bearbeitungsStatus', 64, false, ''); console.log('Attribut "bearbeitungsStatus" erfolgreich erstellt.'); console.log('Bitte warte ca. 5 Sekunden, bis Appwrite das Attribut aktiviert hat.'); } catch (err) { if (err.code === 409 || err.message?.includes('already exists')) { console.log('Attribut "bearbeitungsStatus" existiert bereits – nichts zu tun.'); } else { console.error('Fehler beim Erstellen des Attributs:', err.message || err); process.exit(1); } } } migrate();