65 lines
2.2 KiB
JavaScript
65 lines
2.2 KiB
JavaScript
/**
|
|
* Script zum Erstellen der Appwrite-Collection für Kontaktformulare.
|
|
* Einmalig ausführen mit: node scripts/create-appwrite-collection.mjs
|
|
*
|
|
* Benötigt: API-Key aus Appwrite Console (Settings > API Keys)
|
|
* Umgebungsvariable: APPWRITE_API_KEY=your-secret-key
|
|
*/
|
|
|
|
import { Client, Databases, Permission, Role } from "appwrite";
|
|
|
|
const ENDPOINT = "https://appwrite.webklar.com/v1";
|
|
const PROJECT_ID = "696b82270034001dab69";
|
|
const DATABASE_ID = "698124a20035e8f6dc42";
|
|
const COLLECTION_ID = "contact_submissions";
|
|
|
|
const apiKey = process.env.APPWRITE_API_KEY;
|
|
if (!apiKey) {
|
|
console.error(
|
|
"Fehler: APPWRITE_API_KEY Umgebungsvariable fehlt.\n" +
|
|
"Beispiel: $env:APPWRITE_API_KEY='your-key'; node scripts/create-appwrite-collection.mjs"
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const client = new Client().setEndpoint(ENDPOINT).setProject(PROJECT_ID).setKey(apiKey);
|
|
const databases = new Databases(client);
|
|
|
|
async function createCollection() {
|
|
try {
|
|
// 1. Collection erstellen
|
|
// Permission: "any" darf Dokumente erstellen (für öffentliches Kontaktformular)
|
|
await databases.createCollection(
|
|
DATABASE_ID,
|
|
COLLECTION_ID,
|
|
"Kontaktanfragen",
|
|
[Permission.create(Role.any())],
|
|
true
|
|
);
|
|
console.log("✓ Collection erstellt:", COLLECTION_ID);
|
|
|
|
// 2. Attribute hinzufügen (Appwrite erfordert kleine Wartezeit zwischen den Schritten)
|
|
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
|
|
await databases.createStringAttribute(DATABASE_ID, COLLECTION_ID, "name", 256, true);
|
|
await delay(500);
|
|
await databases.createStringAttribute(DATABASE_ID, COLLECTION_ID, "email", 512, true);
|
|
await delay(500);
|
|
await databases.createStringAttribute(DATABASE_ID, COLLECTION_ID, "company", 256, false);
|
|
await delay(500);
|
|
await databases.createStringAttribute(DATABASE_ID, COLLECTION_ID, "message", 4096, true);
|
|
|
|
console.log("✓ Attribute erstellt: name, email, company, message");
|
|
console.log("\nCollection ist bereit. Kontaktformular kann jetzt genutzt werden.");
|
|
} catch (err) {
|
|
if (err.code === 409) {
|
|
console.log("Collection existiert bereits:", COLLECTION_ID);
|
|
} else {
|
|
console.error("Fehler:", err.message || err);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
createCollection();
|