Files
checklist/backend/migrations/add_question_audit_log.sql

45 lines
1.7 KiB
SQL

-- Migration: Add question_audit_log table
-- Date: 2025-11-27
-- Description: Add audit logging for question changes
CREATE TABLE IF NOT EXISTS question_audit_log (
id SERIAL PRIMARY KEY,
question_id INTEGER NOT NULL,
checklist_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
action VARCHAR(50) NOT NULL,
field_name VARCHAR(100),
old_value TEXT,
new_value TEXT,
comment TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
-- Foreign keys
CONSTRAINT fk_question_audit_question
FOREIGN KEY (question_id)
REFERENCES questions(id)
ON DELETE CASCADE,
CONSTRAINT fk_question_audit_checklist
FOREIGN KEY (checklist_id)
REFERENCES checklists(id)
ON DELETE CASCADE,
CONSTRAINT fk_question_audit_user
FOREIGN KEY (user_id)
REFERENCES users(id)
);
-- Create indexes for better query performance
CREATE INDEX idx_question_audit_question_id ON question_audit_log(question_id);
CREATE INDEX idx_question_audit_checklist_id ON question_audit_log(checklist_id);
CREATE INDEX idx_question_audit_created_at ON question_audit_log(created_at);
CREATE INDEX idx_question_audit_action ON question_audit_log(action);
-- Add comment to table
COMMENT ON TABLE question_audit_log IS 'Registro de auditoría para cambios en preguntas de checklists';
COMMENT ON COLUMN question_audit_log.action IS 'Tipo de acción: created, updated, deleted';
COMMENT ON COLUMN question_audit_log.field_name IS 'Nombre del campo modificado (solo para updates)';
COMMENT ON COLUMN question_audit_log.old_value IS 'Valor anterior del campo';
COMMENT ON COLUMN question_audit_log.new_value IS 'Valor nuevo del campo';