3.3 Conectando Dataverse: generación de servicios tipados

Cómo conectar el proyecto con Dataverse usando comandos de terminal para generar el SDK tipado de TypeScript, y qué archivos se generan automáticamente.

Este es el paso que diferencia a las Code Apps de cualquier otra forma de construir apps web: la generación automática de un SDK tipado para acceder a Dataverse. Vamos a conectar nuestro proyecto con la tabla de incidencias que creamos y a entender qué genera exactamente el CLI.

Objetivos de aprendizaje

  • Conectar el proyecto al entorno de Dataverse usando PAC CLI
  • Generar el SDK de tipos y servicios para la tabla de incidencias
  • Entender la estructura de los archivos generados
  • Usar el SDK en un componente React básico

 

Comando de terminal: Conexión con Dataverse

Para conectar la tabla de incidencias al proyecto, necesitamos que PAC CLI esté autenticado (lo hicimos en el módulo anterior) y ejecutar el siguiente comando en la terminal de VS Code:

# Primero, asegúrate de estar en el directorio del proyecto
cd gestor-incidencias

# Conectamos la tabla de incidencias al proyecto
# El nombre lógico de la tabla es cr_incidencia (sin el prefijo de entidad)
pac code add-data-source --dataverse --table cr_incidencia

# Si quisieras añadir más tablas después:
pac code add-data-source --dataverse --table otra_tabla

Después de ejecutar este comando, el CLI se conectará a tu entorno de Dataverse, recuperará el esquema completo de la tabla cr_incidencia y generará automáticamente los archivos TypeScript en la carpeta src/generated/.

Qué se genera: los archivos del SDK

Dentro de src/generated/services/ encontrarás algo similar a esto:

src/generated/
├── services/
│   ├── CrIncidenciaService.ts    # Clase de servicio con métodos CRUD
│   ├── types/
│   │   └── CrIncidencia.ts       # Interface TypeScript de la entidad
│   └── enums/
│       ├── CrEstado.ts           # Enum con los valores del estado
│       └── CrPrioridad.ts        # Enum con los valores de la prioridad
└── index.ts                      # Re-exporta todo para importación fácil

[Placeholder para imagen: Captura de VS Code mostrando el IntelliSense completo con los tipos de Dataverse generados]

La interface TypeScript generada

El archivo CrIncidencia.ts contendrá algo como:

import { CrEstado } from '../enums/CrEstado';
import { CrPrioridad } from '../enums/CrPrioridad';

export interface CrIncidencia {
  cr_incidenciaid?: string;      // GUID del registro (opcional en creación)
  cr_titulo: string;             // Campo principal
  cr_descripcion?: string;
  cr_estado?: CrEstado;          // Enum de estado
  cr_prioridad?: CrPrioridad;    // Enum de prioridad
  cr_solicitante?: string;
  cr_notas?: string;
  createdon?: Date;              // Campo del sistema
  modifiedon?: Date;             // Campo del sistema
}

El servicio generado

La clase CrIncidenciaService.ts tendrá métodos listos para usar:

import { CrIncidenciaService } from '../generated';
import { CrEstado } from '../generated/enums/CrEstado';

// Obtener todas las incidencias abiertas
const incidenciasAbiertas = await CrIncidenciaService.getAll({
  filter: `cr_estado eq ${CrEstado.Abierta}`
});

// Obtener una incidencia por ID
const incidencia = await CrIncidenciaService.getById('guid-del-registro');

// Crear una nueva incidencia
const nueva = await CrIncidenciaService.create({
  cr_titulo: 'El servidor no responde',
  cr_prioridad: CrPrioridad.Alta,
  cr_solicitante: 'Juan García'
});

// Actualizar una incidencia
await CrIncidenciaService.update('guid', {
  cr_estado: CrEstado.EnProgreso
});

// Eliminar una incidencia
await CrIncidenciaService.delete('guid');
Consejo práctico: Si modificas el esquema de la tabla en Dataverse (añades columnas, cambias opciones...), vuelve a ejecutar el comando pac code add-data-source en tu terminal para regenerar el SDK y que los nuevos campos estén disponibles en TypeScript.

 

Puntos clave

  • El comando de terminal pac code add-data-source --dataverse --table conecta la tabla y genera el SDK
  • El SDK genera interfaces TypeScript, enums y clases de servicio automáticamente
  • Los conjuntos de opciones de Dataverse se convierten en enums TypeScript
  • El servicio generado tiene métodos CRUD listos para usar sin escribir llamadas REST
  • Si el esquema cambia, hay que regenerar el SDK ejecutando el comando nuevamente en terminal
Inicia sesión e inscríbete para guardar tu progreso.
En este curso
¿Te ha resultado útil?