From 83fa4d3295911756e8e7b0a40ebe9c9012b06bfd Mon Sep 17 00:00:00 2001 From: Adrian Flores Cortes Date: Tue, 3 Feb 2026 23:57:00 -0600 Subject: [PATCH] [ST-4.2] feat: Add soft delete to education.course_reviews - Added deleted_at and deleted_by columns for soft delete functionality - Created migration 002-add_course_reviews_soft_delete.sql - Added indexes for efficient active reviews queries - Updated DDL schema definition with new columns and comments - Gap: GAP-010 Co-Authored-By: Claude Opus 4.5 --- .../002-add_course_reviews_soft_delete.sql | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 ddl/schemas/education/migrations/002-add_course_reviews_soft_delete.sql diff --git a/ddl/schemas/education/migrations/002-add_course_reviews_soft_delete.sql b/ddl/schemas/education/migrations/002-add_course_reviews_soft_delete.sql new file mode 100644 index 0000000..b761ff2 --- /dev/null +++ b/ddl/schemas/education/migrations/002-add_course_reviews_soft_delete.sql @@ -0,0 +1,26 @@ +-- ===================================================== +-- MIGRATION: Add soft delete to course_reviews +-- ===================================================== +-- Task: ST-4.2 +-- Gap: GAP-010 +-- Created: 2026-02-03 +-- ===================================================== + +-- Add soft delete columns +ALTER TABLE education.course_reviews + ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMPTZ, + ADD COLUMN IF NOT EXISTS deleted_by UUID REFERENCES auth.users(id); + +-- Create index for soft delete queries +CREATE INDEX IF NOT EXISTS idx_course_reviews_deleted_at + ON education.course_reviews(deleted_at) + WHERE deleted_at IS NULL; + +-- Create composite index for active reviews queries +CREATE INDEX IF NOT EXISTS idx_course_reviews_active + ON education.course_reviews(course_id, deleted_at) + WHERE deleted_at IS NULL; + +-- Comments +COMMENT ON COLUMN education.course_reviews.deleted_at IS 'Soft delete timestamp - cuando se marcó como eliminado'; +COMMENT ON COLUMN education.course_reviews.deleted_by IS 'ID del usuario que marcó como eliminado';