Backend v1.0.71:

- Implementado soft delete para preguntas
- Nuevas columnas: is_deleted (boolean), updated_at (timestamp)
- Migración SQL: add_soft_delete_to_questions.sql
- Endpoint DELETE marca preguntas como eliminadas en lugar de borrarlas
- GET /api/checklists/{id} filtra preguntas eliminadas (is_deleted=false)
- Validación de subpreguntas activas antes de eliminar
- Índices agregados para optimizar queries
- Mantiene integridad de respuestas históricas y PDFs generados
- Permite limpiar checklists sin afectar inspecciones completadas
This commit is contained in:
2025-11-27 15:32:56 -03:00
parent 027f22551c
commit ed3f513075
7 changed files with 75 additions and 11 deletions

View File

@@ -0,0 +1,25 @@
-- Migración: Agregar soft delete a preguntas
-- Fecha: 2025-11-27
-- Descripción: Permite eliminar preguntas sin romper la integridad de respuestas históricas
-- Agregar columna is_deleted a la tabla questions
ALTER TABLE questions ADD COLUMN IF NOT EXISTS is_deleted BOOLEAN DEFAULT FALSE;
-- Agregar columna updated_at si no existe
ALTER TABLE questions ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW();
-- Crear índice para mejorar queries que filtran por is_deleted
CREATE INDEX IF NOT EXISTS idx_questions_is_deleted ON questions(is_deleted);
-- Crear índice compuesto para mejorar queries de preguntas activas por checklist
CREATE INDEX IF NOT EXISTS idx_questions_checklist_active ON questions(checklist_id, is_deleted);
-- Actualizar preguntas existentes como no eliminadas
UPDATE questions SET is_deleted = FALSE WHERE is_deleted IS NULL;
-- Actualizar updated_at en preguntas existentes
UPDATE questions SET updated_at = created_at WHERE updated_at IS NULL;
-- Comentarios en las columnas
COMMENT ON COLUMN questions.is_deleted IS 'Soft delete: marca pregunta como eliminada sin borrarla físicamente, manteniendo integridad de respuestas históricas';
COMMENT ON COLUMN questions.updated_at IS 'Timestamp de última actualización de la pregunta';