--- title: Map Architectuur info: Een gedetailleerd overzicht van onze server map architectuur image: /images/user-guide/fields/field.png --- Header De backend directorystructuur is als volgt: ``` server └───ability └───constants └───core └───database └───decorators └───filters └───guards └───health └───integrations └───metadata └───workspace └───utils ``` ## Ability Defines permissions and includes handlers for each entity. ## Decorators Definieert aangepaste decorators in NestJS voor extra functionaliteit. Zie [aangepaste decorators](https://docs.nestjs.com/custom-decorators) voor meer details. ## Filters Bevat uitzonderingsfilters om uitzonderingen te behandelen die kunnen optreden in GraphQL-eindpunten. ## Guards Zie [guards](https://docs.nestjs.com/guards) voor meer details. ## Health Bevat een openbaar beschikbare REST API (healthz) die een JSON retourneert om te bevestigen of de database zoals verwacht werkt. ## Metadata Definieert aangepaste objecten en maakt een GraphQL API (graphql/metadata) beschikbaar. ## Werkruimte Genereert en biedt een aangepaste GraphQL-schema gebaseerd op de metadata. ### Werkruimte Directorystructuur ``` 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 ``` De root van de werkruimte map bevat de `workspace.factory.ts`, een bestand met de functie `createGraphQLSchema`. This function generates workspace-specific schema by using the metadata to tailor a schema for individual workspaces. By separating the schema and resolver construction, we use the `makeExecutableSchema` function, which combines these discrete elements. Deze strategie gaat niet alleen over organisatie, maar helpt ook bij optimalisatie, zoals het cachen van gegenereerde typedefinities om prestaties en schaalbaarheid te verbeteren. ### Workspace Schema builder Genereert de GraphQL-schema en omvat: #### Factories: Gespecialiseerde constructors om GraphQL-gerelateerde constructies te genereren. - De type.factory vertaalt veldmetadata naar GraphQL-typen met behulp van `TypeMapperService`. - De type-definition.factory creëert GraphQL-invoer of uitvoerobjecten afgeleid van `objectMetadata`. #### GraphQL Typen Includes enumerations, inputs, objects, and scalars, and serves as the building blocks for the schema construction. #### Interfaces en Objectdefinities Contains the blueprints for GraphQL entities, and includes both predefined and custom types like `MONEY` or `URL`. #### Diensten Bevat de dienst die verantwoordelijk is voor het associëren van FieldMetadataType met de bijbehorende GraphQL-scalaar of querymodificaties. #### Opslag Omvat de `TypeDefinitionsStorage` klasse die herbruikbare typedefinities bevat, waardoor duplicatie van GraphQL-typen wordt voorkomen. ### Workspace Resolver Builder Creates resolver functions for querying and mutating the GraphQL schema. Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables. ### Werkruimte Query Runner Voert de gegenereerde queries uit op de database en parseert het resultaat.