almeira-web/setup_live_chat.js

45 lines
1.6 KiB
JavaScript

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();