Files
amayo/README/CLEANUP.md
Shni 852b1d02a2 feat: Add scripts for mob dependency management and server setup
- Implemented `findMobDependencies.ts` to identify foreign key constraints referencing the Mob table and log dependent rows.
- Created `fullServerSetup.ts` for idempotent server setup, including economy items, item recipes, game areas, mobs, and optional demo mob attacks.
- Developed `removeInvalidMobsWithDeps.ts` to delete invalid mobs and their dependencies, backing up affected scheduled mob attacks.
- Added unit tests in `testMobUnit.ts` and `mob.test.ts` for mob functionality, including stats computation and instance retrieval.
- Introduced reward modification tests in `testRewardMods.ts` and `rewardMods.unit.ts` to validate drop selection and coin multiplier behavior.
- Enhanced command handling for mob deletion in `mobDelete.ts` and setup examples in `setup.ts`, ensuring proper permissions and feedback.
- Created utility functions in `testHelpers.ts` for deterministic drop selection from mob definitions.
2025-10-14 14:58:38 -05:00

2.4 KiB

Resumen de la limpieza de mobs inválidos

Qué hice

  • Detecté mob definitions inválidas en la tabla Mob usando scripts/cleanInvalidMobs.ts.
  • Guardé un respaldo completo de las filas inválidas en invalid_mobs_backup.json en la raíz del repo.
  • Busqué dependencias en tablas que referencian Mob con scripts/findMobDependencies.ts.
  • Guardé un respaldo de las filas dependientes en scheduled_mob_attack_backup.json.
  • Eliminé las filas dependientes en ScheduledMobAttack y luego eliminé las filas inválidas de Mob con scripts/removeInvalidMobsWithDeps.ts.

Backups

  • invalid_mobs_backup.json — contiene objetos con id, row (registro original) y error (ZodError).
  • scheduled_mob_attack_backup.json — contiene filas de ScheduledMobAttack que apuntaban a los mobs inválidos.

Comandos usados

  • Detectar mobs inválidos (no destructivo):

    npx tsx scripts/testMobData.ts

  • Generar backup + eliminar mobs inválidos (no recomendado sin revisar):

    XATA_DB=... npx tsx scripts/cleanInvalidMobs.ts

  • Buscar dependencias (muestra FK y filas dependientes):

    XATA_DB=... npx tsx scripts/findMobDependencies.ts

  • Backups + borrado de dependencias y mobs (ya ejecutado):

    XATA_DB=... npx tsx scripts/removeInvalidMobsWithDeps.ts

Restauración

  • Si deseas restaurar datos desde los backups, hay dos estrategias:

    1. Restauración completa (reinsertar mobs, luego scheduled attacks): requiere restaurar Mob antes de ScheduledMobAttack.

    2. Restauración parcial (solo scheduled attacks): solo posible si los Mob existen o se restauran con anterioridad.

Pistas para restaurar (ejemplo rápido)

  • Para reinserción manual (SQL generada): examina invalid_mobs_backup.json, reconstruye los objetos metadata y ejecuta INSERTs en la tabla Mob respetando columnas.

  • Para reinserción de ScheduledMobAttack: usa scheduled_mob_attack_backup.json e inserta filas; asegúrate de que mobId apunte a un Mob existente.

Siguientes pasos recomendados

  • Revisar backups antes de cualquier restauración.
  • Añadir validación previa a la UI que crea mobs para evitar shapes inválidos (ya existe zod pero su uso puede ampliarse).
  • Añadir tests DB-backed en staging para evitar que filas inválidas lleguen a producción.

Contacto

  • Si quieres, puedo generar un script de restauración scripts/restoreFromBackup.ts que hace esto de forma idempotente y segura. Pídelo y lo creo.