feat(cache): migrar caché de guilds de Redis a Appwrite para mejorar rendimiento y persistencia
This commit is contained in:
141
README/GUIA_MANUAL_APPWRITE.md
Normal file
141
README/GUIA_MANUAL_APPWRITE.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# 📋 Guía Paso a Paso: Crear Colección Guild Cache en Appwrite
|
||||
|
||||
## Paso 1: Acceder a tu Database
|
||||
|
||||
1. Ve a [Appwrite Console](https://cloud.appwrite.io) (o tu instancia)
|
||||
2. Selecciona tu proyecto
|
||||
3. En el menú lateral, haz clic en **Databases**
|
||||
4. Selecciona tu database (el que tienes en `APPWRITE_DATABASE_ID`)
|
||||
|
||||
## Paso 2: Crear la Colección
|
||||
|
||||
1. Haz clic en **Create Collection**
|
||||
2. **Collection Name**: `guild_cache`
|
||||
3. **Collection ID**: Déjalo autogenerar o usa `guild_cache`
|
||||
4. Haz clic en **Create**
|
||||
|
||||
## Paso 3: Agregar Atributos
|
||||
|
||||
En la colección que acabas de crear, ve a la pestaña **Attributes** y crea estos 4 atributos:
|
||||
|
||||
### Atributo 1: guildId
|
||||
- Haz clic en **Create Attribute** → **String**
|
||||
- **Attribute Key**: `guildId`
|
||||
- **Size**: `32`
|
||||
- **Required**: ✅ Sí (marcado)
|
||||
- **Array**: ❌ No
|
||||
- Haz clic en **Create**
|
||||
|
||||
### Atributo 2: name
|
||||
- Haz clic en **Create Attribute** → **String**
|
||||
- **Attribute Key**: `name`
|
||||
- **Size**: `100`
|
||||
- **Required**: ✅ Sí (marcado)
|
||||
- **Array**: ❌ No
|
||||
- Haz clic en **Create**
|
||||
|
||||
### Atributo 3: prefix
|
||||
- Haz clic en **Create Attribute** → **String**
|
||||
- **Attribute Key**: `prefix`
|
||||
- **Size**: `10`
|
||||
- **Required**: ❌ No (desmarcado)
|
||||
- **Default value**: (déjalo vacío)
|
||||
- **Array**: ❌ No
|
||||
- Haz clic en **Create**
|
||||
|
||||
### Atributo 4: expiresAt
|
||||
- Haz clic en **Create Attribute** → **DateTime**
|
||||
- **Attribute Key**: `expiresAt`
|
||||
- **Required**: ✅ Sí (marcado)
|
||||
- **Array**: ❌ No
|
||||
- Haz clic en **Create**
|
||||
|
||||
⏳ **IMPORTANTE**: Espera unos segundos a que todos los atributos estén en estado **Available** antes de continuar.
|
||||
|
||||
## Paso 4: Crear Índices
|
||||
|
||||
Ve a la pestaña **Indexes** y crea estos 2 índices:
|
||||
|
||||
### Índice 1: guildId (único)
|
||||
- Haz clic en **Create Index**
|
||||
- **Index Key**: `idx_guildId`
|
||||
- **Index Type**: **Unique**
|
||||
- **Attributes**: Selecciona `guildId`
|
||||
- **Order**: ASC
|
||||
- Haz clic en **Create**
|
||||
|
||||
### Índice 2: expiresAt
|
||||
- Haz clic en **Create Index**
|
||||
- **Index Key**: `idx_expiresAt`
|
||||
- **Index Type**: **Key**
|
||||
- **Attributes**: Selecciona `expiresAt`
|
||||
- **Order**: ASC
|
||||
- Haz clic en **Create**
|
||||
|
||||
## Paso 5: Configurar Permisos
|
||||
|
||||
Ve a la pestaña **Settings** → **Permissions**:
|
||||
|
||||
1. Por defecto debería estar configurado como "API Key"
|
||||
2. Si no, agrega estos permisos:
|
||||
- **Role**: `Any`
|
||||
- **Permissions**: Read, Create, Update, Delete (todas marcadas)
|
||||
|
||||
## Paso 6: Copiar el Collection ID
|
||||
|
||||
1. En la parte superior de la colección, verás el **Collection ID**
|
||||
2. Cópialo (algo como `67xxxxxx` o `guild_cache` si lo personalizaste)
|
||||
|
||||
## Paso 7: Actualizar Variables de Entorno
|
||||
|
||||
Agrega a tu `.env` (o Config Vars en Heroku):
|
||||
|
||||
```env
|
||||
APPWRITE_COLLECTION_GUILD_CACHE_ID=el_collection_id_que_copiaste
|
||||
```
|
||||
|
||||
## Paso 8: Verificar
|
||||
|
||||
Para verificar que todo está bien:
|
||||
|
||||
1. Ve a la colección
|
||||
2. Pestaña **Attributes**: Deberías ver 4 atributos (guildId, name, prefix, expiresAt)
|
||||
3. Pestaña **Indexes**: Deberías ver 2 índices (idx_guildId, idx_expiresAt)
|
||||
|
||||
## Paso 9: Redeploy el Bot
|
||||
|
||||
```bash
|
||||
# Si es local
|
||||
npm run build
|
||||
npm start
|
||||
|
||||
# Si es Heroku
|
||||
git add .
|
||||
git commit -m "chore: agregar APPWRITE_COLLECTION_GUILD_CACHE_ID"
|
||||
git push heroku main
|
||||
```
|
||||
|
||||
## ✅ Listo!
|
||||
|
||||
Después del redeploy, busca en los logs:
|
||||
```
|
||||
✅ Guild config guardada en caché (Appwrite)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Solución de Problemas
|
||||
|
||||
### Error: "Attribute already exists"
|
||||
- El atributo ya existe, pasa al siguiente
|
||||
|
||||
### Error: "Index already exists"
|
||||
- El índice ya existe, pasa al siguiente
|
||||
|
||||
### Error: "Collection not found"
|
||||
- Verifica que el `APPWRITE_COLLECTION_GUILD_CACHE_ID` sea correcto
|
||||
|
||||
### No veo mensajes de caché en los logs
|
||||
- Verifica que todas las variables de Appwrite estén configuradas
|
||||
- Revisa que el Collection ID sea correcto
|
||||
- Comprueba que la colección tenga los permisos correctos
|
||||
Reference in New Issue
Block a user