const { Client, Databases, ID, Permission, Role } = require('node-appwrite'); require('dotenv').config({ path: '.env.local' }); async function setupLiveChat() { console.log("Configuring Live Chat collection..."); const client = new Client() .setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT) .setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID) .setKey(process.env.APPWRITE_API_KEY); const databases = new Databases(client); const dbId = process.env.APPWRITE_DATABASE_ID; try { const collection = await databases.createCollection( dbId, 'live_chat', 'Live Chat', [ Permission.read(Role.any()), Permission.create(Role.users()), // Logged in users can chat Permission.update(Role.team('admin')), Permission.delete(Role.team('admin')), ] ); console.log("Collection 'live_chat' created."); // Attributes await databases.createStringAttribute(dbId, 'live_chat', 'user_id', 50, true); await databases.createStringAttribute(dbId, 'live_chat', 'user_name', 100, true); await databases.createStringAttribute(dbId, 'live_chat', 'message', 500, true); await databases.createDatetimeAttribute(dbId, 'live_chat', 'timestamp', true); console.log("Attributes created."); } catch (e) { if (e.code === 409) { console.log("Collection already exists."); } else { console.error("Error creating collection:", e); } } } setupLiveChat();