Salt la conținutul principal
Header
Structura directorului backend este următoarea:
server
  └───ability
  └───constants 
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils

Abilitate

Definește permisiunile și include gestionari pentru fiecare entitate.

Decoratori

Definește decoratori personalizați în NestJS pentru funcționalitate adăugată. Vezi decoratori personalizați pentru mai multe detalii.

Filtre

Include filtre de excepție pentru a gestiona excepțiile care ar putea apărea în punctele finale GraphQL.

Paznici

Vezi paznici pentru mai multe detalii.

Sănătate

Include o API REST disponibilă public (healthz) care returnează un JSON pentru a verifica dacă baza de date funcționează așa cum este de așteptat.

Metadate

Definește obiecte personalizate și face disponibilă o API GraphQL (graphql/metadata).

Spațiu de lucru

Generează și servește o schemă GraphQL personalizată pe baza metadatelor.

Structura Directorului de Spațiu de Lucru

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      
The root of the workspace directory includes the workspace.factory.ts, a file containing the createGraphQLSchema function. Această funcție generează schema specifică spațiului de lucru folosind metadatele pentru a personaliza o schemă pentru spațiile de lucru individuale. Prin separarea construcției de schema și rezolvatori, folosim funcția makeExecutableSchema, care combină aceste elemente discrete. Această strategie nu este doar despre organizare, ci ajută și la optimizare, cum ar fi caching-ul definițiilor de tip generate pentru a îmbunătăți performanța și scalabilitatea.

Constructor Schema Spațiu de Lucru

Generează schema GraphQL și include:

Fabrici:

Constructori specializați pentru a genera construcții legate de GraphQL.
  • Tipul.fabrică traduce metadatele câmpului în tipuri GraphQL folosind TypeMapperService.
  • Tipul-definiție.fabrică creează obiecte GraphQL de intrare sau ieșire derivate din objectMetadata.

Tipuri GraphQL

Include enumerări, inputuri, obiecte și scalari și servește ca blocuri de construcție pentru construcția schema.

Interfețe și Definiții de Obiect

Conține planurile pentru entitățile GraphQL și include atât tipuri predefinite, cât și personalizate, precum MONEY sau URL.

Servicii

Conține serviciul responsabil pentru asocierea FieldMetadataType cu scalarul GraphQL corespunzător sau modificatorii de interogare.

Stocare

Include clasa TypeDefinitionsStorage care conține definiții de tip reutilizabile, prevenind duplicarea tipurilor GraphQL.

Constructor Rezolvator Spațiu de Lucru

Creează funcții de rezolvare pentru interogarea și modificarea schemei GraphQL. Fiecare fabrică din acest director este responsabilă pentru producerea unui tip de rezolvator distinct, cum ar fi FindManyResolverFactory, proiectată pentru aplicare adaptabilă în diverse tabele.

Executor Întrebări Spațiu de Lucru

Rulează interogările generate pe baza de date și parcurge rezultatul.