Vai al contenuto

Importare da Hasura

Provisa può convertire i metadati Hasura esistenti in un config.yaml Provisa, preservando tabelle tracciate, relazioni, permessi, e schemi remoti.

Hasura v2

Esportazione dei metadati

Dalla tua console o CLI Hasura:

hasura metadata export --output metadata.yaml

Oppure usa l'API Hasura:

curl -X POST http://localhost:8080/v1/metadata \
  -H "X-Hasura-Admin-Secret: <secret>" \
  -d '{"type":"export_metadata","args":{}}' \
  > metadata.json

Conversione

Il convertitore v2 legge una directory di metadati Hasura (il layout prodotto da hasura metadata export, o il layout piatto tables.yaml / actions.yaml) e scrive una config Provisa:

python -m provisa.hasura_v2 ./metadata -o config.yaml

Ometti -o per scrivere la config su stdout.

Flag:

Flag Scopo
-o, --output Percorso YAML di output (default: stdout)
--source-overrides File YAML con override di connessione per origine (host, porta, credenziali)
--domain-map Mappature schema-a-dominio come coppie SCHEMA=DOMAIN
--auth-env-file File .env con config di autenticazione; converte JWT/JWK, admin secret, e claims map
--dry-run Analizza e valida senza scrivere output

Cosa viene convertito

Concetto Hasura Equivalente Provisa
Tabella tracciata tables[] con publish: true
Relazione object relationships[] con cardinality: many-to-one
Relazione array relationships[] con cardinality: one-to-many
Permesso select Visibilità ruolo + filtro RLS
Permesso colonna visible_to / writable_by
Permesso insert/update/delete writable_by mutation + RLS
Schema remoto Registrazione origine graphql_remote
Campo calcolato Voce functions[] con kind: query

Limitazioni

  • Le Action vengono convertite automaticamente: le action con handler HTTP diventano mutation webhooks[]; le action con handler non-HTTP (database) diventano un placeholder functions[] ed emettono un avviso per revisionare l'handler
  • Gli Event trigger vengono convertiti in config event_triggers per tabella (operazioni, URL webhook, policy di retry) ed emettono un avviso sulla fedeltà limitata
  • Gli Schema remoti vengono convertiti in voci origine graphql_remote
  • Le funzioni SQL custom richiedono revisione — i casi semplici vengono convertiti in voci functions[], quelli complessi necessitano di lavoro manuale
  • I Cron trigger vengono convertiti in voci config scheduler, preservando l'espressione cron e il flag enabled

Hasura DDN (v3)

Localizzare il progetto HML

Il convertitore DDN legge direttamente la directory di progetto DDN dei file .hml — nessun passo di build del supergraph richiesto. Il primo componente di directory sotto la root del progetto viene preso come nome del subgraph; i file sotto globals/ vengono assegnati al subgraph globals.

Conversione

python -m provisa.ddn ./my-ddn-project -o config.yaml

Ometti -o per scrivere la config su stdout.

Flag:

Flag Scopo
-o, --output Percorso YAML di output (default: stdout)
--source-overrides File YAML con override di connessione per origine
--domain-map Mappature subgraph-a-dominio come coppie SUBGRAPH=DOMAIN
--aggregates-output Percorso di output per il sidecar aggregate-expressions (default: <output>-aggregates.yaml)
--dry-run Analizza e valida senza scrivere output

I metadati AggregateExpression vengono preservati in un file sidecar *-aggregates.yaml.

Cosa viene convertito

Concetto DDN Equivalente Provisa
Modello subgraph tables[] sotto un'origine
Relazione relationships[]
Regola di permesso Filtro RLS
Command Mutation webhook o vista
Connettore Voce origine con dettagli di connessione

Limitazioni

  • I connettori Lambda (funzioni TypeScript/Python) richiedono setup manuale del webhook
  • I plugin di lifecycle non hanno un equivalente diretto
  • Le modalità di autenticazione DDN mappano ai provider di autenticazione Provisa ma i percorsi delle claim JWT potrebbero richiedere aggiustamenti

Dopo l'import

  1. Rivedi il config.yaml generato — presta attenzione ai warnings del convertitore
  2. Verifica le credenziali di connessione (il convertitore usa valori placeholder)
  3. Avvia Provisa e conferma che le tabelle appaiono nell'Explorer
  4. Esegui le tue query GraphQL esistenti — lo schema è compatibile per i pattern comuni
  5. Invia le query per l'approvazione tramite l'API Admin o la UI prima di abilitare la governance di produzione