/** * Appwrite-Anbindung für das Kontaktformular. * * In der Appwrite Console anlegen: * 1. Database (z. B. ID: "contacts") * 2. Collection (z. B. ID: "messages") mit String-Attributen: name, email, company, message * 3. Unter "Settings" der Collection: Create-Berechtigung für "Any" aktivieren (öffentliches Formular) * 4. IDs in .env setzen: VITE_APPWRITE_DATABASE_ID, VITE_APPWRITE_CONTACT_COLLECTION_ID */ import { Client, Databases, ID } from "appwrite"; const CONTACT_DATABASE_ID = import.meta.env.VITE_APPWRITE_DATABASE_ID ?? "698124a20035e8f6dc42"; const CONTACT_COLLECTION_ID = import.meta.env.VITE_APPWRITE_CONTACT_COLLECTION_ID ?? "contact_submissions"; function getDatabases(): Databases { const endpoint = import.meta.env.VITE_APPWRITE_ENDPOINT; const projectId = import.meta.env.VITE_APPWRITE_PROJECT_ID; if (!endpoint || !projectId) { throw new Error( "Appwrite ist nicht konfiguriert. Bitte VITE_APPWRITE_ENDPOINT und VITE_APPWRITE_PROJECT_ID setzen. " + "Lokal: .env anlegen (z. B. mit „npm run setup:env“) und Build/Dev-Server neu starten. " + "Server: gleiche Variablen in der Build-Umgebung setzen (z. B. in .env vor „npm run build“)." ); } const client = new Client().setEndpoint(endpoint).setProject(projectId); return new Databases(client); } let _databases: Databases | null = null; export type ContactFormData = { name: string; email: string; company: string; message: string; }; export async function createContactDocument(data: ContactFormData) { if (!_databases) _databases = getDatabases(); return _databases.createDocument( CONTACT_DATABASE_ID, CONTACT_COLLECTION_ID, ID.unique(), { name: data.name, email: data.email, company: data.company, message: data.message, }, [] // Keine Dokument-Permissions; nur Collection-Berechtigung „Create für Any“ wird genutzt ); }