feat: introduce content library management for reusable content blocks with dedicated API endpoints and database schema.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- 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();
|
||||
Reference in New Issue
Block a user