52 lines
2.1 KiB
SQL
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();
|