Saltar para o conteúdo principal
Header
A estrutura do diretório do backend é a seguinte:
server
  └───ability
  └───constants 
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils

Ability

Define permissões e inclui manipuladores para cada entidade.

Decoradores

Define decoradores personalizados no NestJS para funcionalidade adicional. Veja decoradores personalizados para mais detalhes.

Filtros

Inclui filtros de exceção para lidar com exceções que podem ocorrer em endpoints GraphQL.

Guards

Veja guardiões para mais detalhes.

Saúde

Inclui uma API REST publicamente disponível (healthz) que retorna um JSON para confirmar se o banco de dados está funcionando como esperado.

Metadados

Define objetos personalizados e disponibiliza uma API GraphQL (graphql/metadata).

Workspace

Gera e fornece um esquema GraphQL personalizado baseado nos metadados.

Estrutura de Diretórios do Workspace

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      
A raiz do diretório do workspace inclui o workspace.factory.ts, um arquivo contendo a função createGraphQLSchema. Esta função gera um esquema específico do workspace usando os metadados para adaptar um esquema para workspaces individuais. Ao separar a construção do esquema e do solucionador, utilizamos a função makeExecutableSchema, que combina esses elementos discretos. Esta estratégia não é apenas sobre organização, mas também ajuda na otimização, como o armazenamento em cache das definições de tipo geradas para melhorar o desempenho e a escalabilidade.

Construtor do Esquema do Workspace

Gera o esquema GraphQL e inclui:

Fábricas:

Construtores especializados para gerar construções relacionadas ao GraphQL.
  • A type.factory traduz metadados de campo em tipos GraphQL usando o TypeMapperService.
  • A type-definition.factory cria objetos de entrada ou saída GraphQL derivados de objectMetadata.

Tipos GraphQL

Inclui enumerações, entradas, objetos e escalas, e serve como blocos de construção para a construção do esquema.

Interfaces e Definições de Objetos

Contém os modelos para entidades GraphQL e inclui tipos predefinidos e personalizados como MONEY ou URL.

Serviços

Contém o serviço responsável por associar FieldMetadataType ao seu adequado escalar GraphQL ou modificadores de consulta.

Armazenamento

Inclui a classe TypeDefinitionsStorage que contém definições de tipo reutilizáveis, prevenindo a duplicação de tipos GraphQL.

Construtor de Solucionadores do Workspace

Cria funções de solucionadores para consultas e mutações do esquema GraphQL. Cada fábrica neste diretório é responsável por produzir um tipo de solucionador distinto, como o FindManyResolverFactory, projetado para aplicação adaptável em várias tabelas.

Executor de Consultas do Workspace

Executa as consultas geradas no banco de dados e analisa o resultado.