Files
openccb/services/cms-service/migrations/20260216000004_content_libraries.sql
T

52 lines
2.1 KiB
SQL

-- Content Libraries: Repositorio reutilizable de bloques y lecciones
-- Permite a instructores guardar y reutilizar componentes de contenido
-- Bloques reutilizables guardados en la biblioteca
CREATE TABLE library_blocks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organization_id UUID NOT NULL,
created_by UUID NOT NULL, -- El instructor que lo guardó
name TEXT NOT NULL, -- Nombre descriptivo dado por el instructor
description TEXT, -- Descripción opcional
block_type TEXT NOT NULL, -- 'quiz', 'peer-review', 'hotspot', etc.
block_data JSONB NOT NULL, -- El bloque completo (mismo formato que metadata.blocks)
tags TEXT[], -- Array de etiquetas para búsqueda
usage_count INTEGER DEFAULT 0, -- Contador de cuántas veces se ha usado
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Índices para búsqueda eficiente
CREATE INDEX idx_library_blocks_org ON library_blocks(organization_id);
CREATE INDEX idx_library_blocks_type ON library_blocks(block_type);
CREATE INDEX idx_library_blocks_tags ON library_blocks USING GIN(tags);
CREATE INDEX idx_library_blocks_created_by ON library_blocks(created_by);
-- Trigger para actualizar updated_at
CREATE TRIGGER update_library_blocks_updated_at
BEFORE UPDATE ON library_blocks
FOR EACH ROW
EXECUTE PROCEDURE update_updated_at_column();
-- Plantillas de lecciones completas (para futuras expansiones)
CREATE TABLE library_templates (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organization_id UUID NOT NULL,
created_by UUID NOT NULL,
name TEXT NOT NULL,
description TEXT,
lesson_data JSONB NOT NULL, -- Incluye metadata.blocks y configuración
tags TEXT[],
usage_count INTEGER DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_library_templates_org ON library_templates(organization_id);
-- Trigger para actualizar updated_at
CREATE TRIGGER update_library_templates_updated_at
BEFORE UPDATE ON library_templates
FOR EACH ROW
EXECUTE PROCEDURE update_updated_at_column();