45 lines
1.7 KiB
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';
|