Vai al contenuto principale
La struttura della directory del backend è la seguente:
server
  └───ability
  └───constants
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils

Capacità

Definisce le autorizzazioni e include gestori per ciascuna entità.

Decoratori

Definisce decoratori personalizzati in NestJS per funzionalità aggiuntive. Vedi decoratori personalizzati per maggiori dettagli.

Filtri

Include filtri di eccezione per gestire le eccezioni che potrebbero verificarsi nei punti finali GraphQL.

Guards

Vedi guards per ulteriori dettagli.

Stato di salute

Include un’API REST pubblicamente disponibile (healthz) che restituisce un JSON per confermare se il database funziona correttamente.

Metadati

Definisce oggetti personalizzati e rende disponibile un’API GraphQL (graphql/metadata).

Workspace

Genera e serve schemi GraphQL personalizzati basati sui metadati.

Struttura della directory dello spazio di lavoro

workspace

  └───workspace-schema-builder
    └───factories
    └───graphql-types
    └───database
    └───interfaces
    └───object-definitions
    └───services
    └───storage
    └───utils
  └───workspace-resolver-builder
    └───factories
    └───interfaces
  └───workspace-query-builder
    └───factories
    └───interfaces
  └───workspace-query-runner
    └───interfaces
    └───utils
  └───workspace-datasource
  └───workspace-manager
  └───workspace-migration-runner
  └───utils
  └───workspace.module.ts
  └───workspace.factory.spec.ts
  └───workspace.factory.ts
La radice della directory di lavoro include il workspace.factory.ts, un file contenente la funzione createGraphQLSchema. Questa funzione genera uno schema specifico per il workspace utilizzando i metadati per adattare uno schema per i singoli lavori. Separando la costruzione dello schema e del risolutore, utilizziamo la funzione makeExecutableSchema, che combina questi elementi discreti. Questa strategia non riguarda solo l’organizzazione, ma aiuta anche con l’ottimizzazione, come la memorizzazione nella cache delle definizioni di tipo generate per migliorare le prestazioni e la scalabilità.

Generatore dello schema dello spazio di lavoro

Genera lo schema GraphQL e include:

Factory:

Costruttori specializzati per generare costrutti correlati a GraphQL.
  • La fabbrica type.factory traduce i metadati del campo in tipi GraphQL utilizzando TypeMapperService.
  • La fabbrica type-definition.factory crea oggetti di input o output GraphQL derivati da objectMetadata.

Tipi GraphQL

Include enumerazioni, input, oggetti e scalari e funge da base per la costruzione dello schema.

Interfacce e Definizioni di Oggetti

Contiene i progetti per le entità GraphQL e include tipi predefiniti e personalizzati come MONEY o URL.

Servizi

Contiene il servizio responsabile dell’associazione di FieldMetadataType al relativo scalare GraphQL o ai modificatori di query.

Archiviazione

Include la classe TypeDefinitionsStorage che contiene definizioni di tipo riutilizzabili, evitando la duplicazione di tipi GraphQL.

Generatore di resolver dello spazio di lavoro

Crea funzioni di risolutore per interrogare e modificare lo schema GraphQL. Ogni factory in questa directory è responsabile della produzione di un tipo di resolver distinto, come FindManyResolverFactory, progettato per un’applicazione adattabile su varie tabelle.

Esecutore di query dello spazio di lavoro

Esegue le query generate sul database e analizza il risultato.