---
title: Gidsargitektuur
info: ‘n Gedetailleerde blik op ons bedienergids argitektuur
image: /images/user-guide/fields/field.png
---

<Frame>
  <img src="/images/user-guide/fields/field.png" alt="Header" />
</Frame>

Die agtergrond gidsstruktuur is soos volg:

```
server
  └───ability
  └───constants 
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils
```

## Vermoë

Definieer toestemmings en sluit hanterings in vir elke entiteit.

## Versierders

Definieer pasgemaakte versierders in NestJS vir bykomende funksionaliteit.

Sien [pasgemaakte versierders](https://docs.nestjs.com/custom-decorators) vir meer besonderhede.

## Filtreerders

Sluit uitsonderingsfilters in om uitsonderings wat mag voorkom in GraphQL-eindpunte te hanteer.

## Beskermers

Sien [beskermers](https://docs.nestjs.com/guards) vir meer besonderhede.

## Gesondheid

Sluit 'n openbaar beskikbare REST API (healthz) in wat 'n JSON teruggee om te bevestig of die databasis werk soos verwag.

## Metadata

Definieer pasgemaakte voorwerpe en maak beskikbaar 'n GraphQL API (graphql/metadata).

## Werkruimte

Genereer en bedien pasgemaakte GraphQL-skema gebaseer op die metadata.

### Workspace Directory Structure

```
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. Hierdie funksie genereer 'n werksgebied-spesifieke skema deur die metadata te gebruik om 'n skema vir individuele werksgebiede aan te pas. Deur die skema- en oplosser-konstruksie te skei, gebruik ons die `makeExecutableSchema` funksie, wat hierdie afsonderlike elemente kombineer.

Hierdie strategie gaan nie net oor organisasie nie, maar help ook met optimering, soos om gegenereerde tipes definisies te kas om prestasie en skaalbaarheid te verbeter.

### Workspace Schema builder

Genereer die GraphQL-skema, en sluit in:

#### Fabrieke:

Specialised constructors to generate GraphQL-related constructs.

- Die tipe.fabriek vertaal veldmetadata na GraphQL-tipes deur die `TypeMapperService` te gebruik.
- Die tipe-definisie.fabriek skep GraphQL inset- of uitvoerobjects afgelei van `objectMetadata`.

#### GraphQL Tipes

Sluit inskrywings, insette, voorwerpe en skalare in, en dien as die boustene vir die skemakonstruksie.

#### Koppelvlakke en Voorwerp Definisies

Bevat die bloudrukke vir GraphQL-entiteite, en sluit beide vooraf gedefinieerde en pasgemaakte tipes soos `MONEY` of `URL` in.

#### Dienste

Bevat die diens verantwoordelik vir die assosiasie van FieldMetadataType met sy toepaslike GraphQL-skaal of navraag-modifikators.

#### Berging

Sluit die `TypeDefinitionsStorage` klas in wat herbruikbare tipes definisies bevat, wat duplikasie van GraphQL-tipes voorkom.

### Workspace Resolver Builder

Skep oplosserfunksies vir die bevraagtekening en verandering van die GraphQL-skema.

Elke fabriek in hierdie gids is verantwoordelik vir die vervaardiging van 'n besondere oplossertipe, soos die `FindManyResolverFactory`, wat ontwerp is vir aanpasbare toepassing oor verskeie tabelle.

### Werksgebied Navraag Loper

Voer die gegenereerde navrae op die databasis uit en ontleed die resultaat.
