trading-platform-database-v2/ddl/schemas/education/tables/14-course_reviews.sql
rckrdmrd 45e77e9a9c feat: Initial commit - Database schemas and scripts
DDL schemas for Trading Platform:
- User management
- Authentication
- Payments
- Education
- ML predictions
- Trading data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 04:30:23 -06:00

49 lines
2.0 KiB
SQL

-- =====================================================
-- TABLE: education.course_reviews
-- =====================================================
-- Proyecto: OrbiQuant IA (Trading Platform)
-- Módulo: OQI-002 - Education
-- Especificación: Tabla adicional para reviews de cursos
-- =====================================================
CREATE TABLE education.course_reviews (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
course_id UUID NOT NULL REFERENCES education.courses(id) ON DELETE CASCADE,
enrollment_id UUID NOT NULL REFERENCES education.enrollments(id) ON DELETE CASCADE,
-- Review
rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5),
title VARCHAR(200),
content TEXT,
-- Moderación
is_approved BOOLEAN DEFAULT false,
is_featured BOOLEAN DEFAULT false,
approved_by UUID REFERENCES auth.users(id),
approved_at TIMESTAMPTZ,
-- Votos útiles
helpful_votes INTEGER DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT unique_user_course_review UNIQUE(user_id, course_id)
);
-- Índices
CREATE INDEX idx_reviews_course ON education.course_reviews(course_id);
CREATE INDEX idx_reviews_user ON education.course_reviews(user_id);
CREATE INDEX idx_reviews_rating ON education.course_reviews(rating);
CREATE INDEX idx_reviews_approved ON education.course_reviews(is_approved) WHERE is_approved = true;
CREATE INDEX idx_reviews_featured ON education.course_reviews(is_featured) WHERE is_featured = true;
CREATE INDEX idx_reviews_helpful ON education.course_reviews(helpful_votes DESC);
-- Comentarios
COMMENT ON TABLE education.course_reviews IS 'Reviews y calificaciones de cursos por usuarios';
COMMENT ON COLUMN education.course_reviews.is_approved IS 'Review aprobada por moderador';
COMMENT ON COLUMN education.course_reviews.is_featured IS 'Review destacada para mostrar en página del curso';
COMMENT ON COLUMN education.course_reviews.helpful_votes IS 'Número de votos útiles de otros usuarios';