Importación desde Hasura¶
Provisa puede convertir metadatos existentes de Hasura en un config.yaml de Provisa, preservando las tablas rastreadas, relaciones, permisos y esquemas remotos.
Hasura v2¶
Exportar metadatos¶
Desde su consola o CLI de Hasura:
O use la API de Hasura:
curl -X POST http://localhost:8080/v1/metadata \
-H "X-Hasura-Admin-Secret: <secret>" \
-d '{"type":"export_metadata","args":{}}' \
> metadata.json
Convertir¶
El convertidor v2 lee un directorio de metadatos de Hasura (el diseño producido por hasura metadata export, o el diseño plano tables.yaml / actions.yaml) y escribe un config de Provisa:
Omita -o para escribir el config en stdout.
Flags:
| Flag | Propósito |
|---|---|
-o, --output |
Ruta del YAML de salida (por defecto: stdout) |
--source-overrides |
Archivo YAML con overrides de conexión por origen (host, puerto, credenciales) |
--domain-map |
Mapeos de esquema a dominio como pares SCHEMA=DOMAIN |
--auth-env-file |
Archivo .env con configuración de autenticación; convierte JWT/JWK, secreto de administrador y mapa de claims |
--dry-run |
Analiza y valida sin escribir la salida |
Qué se convierte¶
| Concepto de Hasura | Equivalente en Provisa |
|---|---|
| Tabla rastreada | tables[] con publish: true |
| Relación de objeto | relationships[] con cardinality: many-to-one |
| Relación de array | relationships[] con cardinality: one-to-many |
| Permiso de select | Visibilidad de rol + filtro RLS |
| Permiso de columna | visible_to / writable_by |
| Permiso de insert/update/delete | Mutación writable_by + RLS |
| Esquema remoto | Registro de origen graphql_remote |
| Campo calculado | Entrada de functions[] con kind: query |
Limitaciones¶
- Actions: se convierten automáticamente: las actions con handler HTTP se convierten en mutaciones
webhooks[]; las actions con handler no HTTP (base de datos) se convierten en un placeholder defunctions[]y emiten una advertencia para revisar el handler - Event triggers: se convierten en configuración
event_triggerspor tabla (operaciones, URL de webhook, política de reintentos) y emiten una advertencia señalando fidelidad limitada - Esquemas remotos: se convierten en entradas de origen
graphql_remote - Funciones SQL personalizadas: requieren revisión — los casos simples se convierten en entradas de
functions[], los complejos requieren trabajo manual - Cron triggers: se convierten en entradas de configuración de
scheduler, preservando la expresión cron y el flag de habilitado
Hasura DDN (v3)¶
Ubicar el proyecto HML¶
El convertidor DDN lee directamente el directorio del proyecto DDN con archivos .hml — no se requiere un paso de build del supergraph. El primer componente de directorio bajo la raíz del proyecto se toma como el nombre del subgraph; los archivos bajo globals/ se asignan al subgraph globals.
Convertir¶
Omita -o para escribir el config en stdout.
Flags:
| Flag | Propósito |
|---|---|
-o, --output |
Ruta del YAML de salida (por defecto: stdout) |
--source-overrides |
Archivo YAML con overrides de conexión por origen |
--domain-map |
Mapeos de subgraph a dominio como pares SUBGRAPH=DOMAIN |
--aggregates-output |
Ruta de salida para el archivo complementario de expresiones agregadas (por defecto: <output>-aggregates.yaml) |
--dry-run |
Analiza y valida sin escribir la salida |
Los metadatos de AggregateExpression se preservan en un archivo complementario *-aggregates.yaml.
Qué se convierte¶
| Concepto de DDN | Equivalente en Provisa |
|---|---|
| Modelo de subgraph | tables[] bajo un origen |
| Relación | relationships[] |
| Regla de permiso | Filtro RLS |
| Command | Mutación webhook o vista |
| Connector | Entrada de origen con detalles de conexión |
Limitaciones¶
- Lambda connectors (funciones TypeScript/Python) requieren configuración manual de webhook
- Lifecycle plugins no tienen equivalente directo
- Modos de autenticación de DDN se mapean a proveedores de autenticación de Provisa, pero las rutas de claims JWT pueden requerir ajustes
Después de la importación¶
- Revise el
config.yamlgenerado — preste atención a laswarningsdel convertidor - Verifique las credenciales de conexión (el convertidor usa valores de marcador de posición)
- Inicie Provisa y confirme que las tablas aparecen en el Explorer
- Ejecute sus consultas GraphQL existentes — el esquema es compatible con patrones comunes
- Envíe las consultas para aprobación mediante la Admin API o la UI antes de habilitar el gobierno de producción