MIGRATION_GUIDE.md 3.6 KB

Guía de Migración a PostgreSQL

🎯 Objetivo

Migrar la aplicación de SQLite a PostgreSQL para mejor rendimiento y escalabilidad.

📋 Requisitos Previos

1. Instalar PostgreSQL en Windows

Opción A: Instalador Oficial

  1. Descarga PostgreSQL desde https://www.postgresql.org/download/windows/
  2. Ejecuta el instalador
  3. Configura la contraseña del usuario postgres
  4. Instala en el puerto por defecto (5432)

Opción B: Usando Chocolatey

choco install postgresql

2. Crear la Base de Datos

# Conectar a PostgreSQL
psql -U postgres

# Crear la base de datos
CREATE DATABASE ani_assistant;

# Verificar que se creó
\l

# Salir
\q

🔧 Configuración

1. Actualizar Variables de Entorno

Edita tu archivo .env:

# Cambiar de SQLite a PostgreSQL
DATABASE_URL="postgresql://postgres:tu-password@localhost:5432/ani_assistant"

2. Verificar Configuración

npm run check-env

🚀 Proceso de Migración

Paso 1: Generar Migraciones

# Generar migración inicial
npm run db:migrate

Paso 2: Aplicar Migraciones

# Aplicar las migraciones a PostgreSQL
npm run db:push

Paso 3: Configurar Usuarios

# Crear usuarios de prueba
npm run db:setup

Paso 4: Cargar Datos (Opcional)

# Cargar datos de ejemplo
npm run db:seed

🔍 Verificación

1. Verificar Conexión

npm run check-env

2. Probar la Aplicación

npm run dev

3. Verificar en PostgreSQL

psql -U postgres -d ani_assistant

# Ver tablas
\dt

# Ver usuarios
SELECT name, lastname, username, email, role FROM "User";

# Salir
\q

🆘 Solución de Problemas

Error: "connection refused"

  • Verificar que PostgreSQL esté ejecutándose
  • Verificar el puerto (5432)
  • Verificar credenciales en DATABASE_URL

Error: "database does not exist"

# Crear la base de datos
psql -U postgres
CREATE DATABASE ani_assistant;
\q

Error: "permission denied"

  • Verificar que el usuario tenga permisos
  • Verificar la contraseña en DATABASE_URL

Error: "relation does not exist"

# Regenerar el cliente de Prisma
npm run db:generate

# Aplicar migraciones
npm run db:push

📊 Diferencias con SQLite

Ventajas de PostgreSQL

  • ✅ Mejor rendimiento con múltiples usuarios
  • ✅ Transacciones ACID completas
  • ✅ Mejor escalabilidad
  • ✅ Más tipos de datos
  • ✅ Mejor soporte para consultas complejas

Consideraciones

  • ⚠️ Requiere instalación y configuración
  • ⚠️ Más recursos del sistema
  • ⚠️ Configuración de red para producción

🔄 Rollback (Si es necesario)

Si necesitas volver a SQLite:

  1. Cambiar DATABASE_URL en .env:

    DATABASE_URL="file:./dev.db"
    
  2. Cambiar provider en prisma/schema.prisma:

    datasource db {
    provider = "sqlite"
    url      = env("DATABASE_URL")
    }
    
  3. Regenerar y aplicar:

    npm run db:generate
    npm run db:push
    npm run db:setup
    

📝 Notas Importantes

  • Backup: Siempre haz backup de tus datos antes de migrar
  • Testing: Prueba en un entorno de desarrollo primero
  • Performance: PostgreSQL puede ser más lento en desarrollo local
  • Storage: Las imágenes se guardan en /uploads/photos_profile/

🎉 ¡Migración Completada!

Una vez completada la migración, tu aplicación estará usando PostgreSQL con todas las nuevas características:

  • ✅ Usernames únicos generados automáticamente
  • ✅ Separación de nombre y apellido
  • ✅ Almacenamiento de imágenes en archivos
  • ✅ Mejor rendimiento y escalabilidad