almeira-web/setup_stream_state.js
Carlos (Almeira) 699cfa232d feat: Live Chat en TV + página overlay transparente para streaming
- Añade componente LiveChatBox con Realtime de Appwrite (subscribe)
- Integra chat en vivo junto al player en /tv con layout 2/3 + 1/3
- Nueva ruta /tv/overlay: página transparente para browser source en OBS
  con renderizadores de LOWER_THIRD, TICKER y COMMENT reactivos en Realtime
- Exporta 'account' desde appwrite.ts para autenticación cliente
- Incluye scripts setup_live_chat.js y setup_stream_state.js para provisionar
  colecciones live_chat y stream_state en Appwrite
- Ajusta versiones SDK: appwrite@22.4.1 y node-appwrite@22.0.0 (compatibles con servidor 1.8.1)
2026-06-20 22:18:29 -05:00

42 lines
1.4 KiB
JavaScript

const { Client, Databases, ID, Permission, Role } = require('node-appwrite');
require('dotenv').config({ path: '.env.local' });
async function setupStreamState() {
console.log("Configuring Stream State collection...");
const client = new Client()
.setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT)
.setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT)
.setKey(process.env.APPWRITE_API_KEY);
const databases = new Databases(client);
const dbId = process.env.NEXT_PUBLIC_APPWRITE_DATABASE;
try {
const collection = await databases.createCollection(
dbId,
'stream_state',
'Stream State',
[
Permission.read(Role.any()),
Permission.update(Role.any()), // Permitimos a cualquiera actualizar por ahora para la demo
Permission.create(Role.any()),
Permission.delete(Role.any()),
]
);
console.log("Collection 'stream_state' created.");
// Attributes
await databases.createStringAttribute(dbId, 'stream_state', 'active_overlays', 10000, false);
console.log("Attributes created.");
} catch (e) {
if (e.code === 409) {
console.log("Collection already exists.");
} else {
console.error("Error creating collection:", e);
}
}
}
setupStreamState();