---
title: Folder Architecture
info: Μια λεπτομερής ματιά στη δομή φακέλου του διακομιστή μας
image: /images/user-guide/fields/field.png
---

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

Η δομή του υποκαταλόγου του backend είναι ως εξής:

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

## Ability

Ορίζει άδειες και περιλαμβάνει χειριστές για κάθε οντότητα.

## Διακοσμητές

Ορίζει προσαρμοσμένους διακοσμητές στο NestJS για πρόσθετη λειτουργικότητα.

Δείτε [προσαρμοσμένους διακοσμητές](https://docs.nestjs.com/custom-decorators) για περισσότερες λεπτομέρειες.

## Φίλτρα

Περιλαμβάνει φίλτρα εξαίρεσης για τη διαχείριση εξαιρέσεων που μπορεί να συμβούν σε σημεία τέλους του GraphQL.

## Φρουροί

Δείτε [φρουρούς](https://docs.nestjs.com/guards) για περισσότερες λεπτομέρειες.

## Health

Περιλαμβάνει ένα διαθέσιμο δημόσια REST API (healthz) που επιστρέφει έναν JSON για να επιβεβαιώσει αν η βάση δεδομένων λειτουργεί όπως αναμένεται.

## Μεταδεδομένα

Ορίζει προσαρμοσμένα αντικείμενα και παρέχει ένα API του GraphQL (graphql/metadata).

## Περιοχή Εργασίας

Παράγει και εξυπηρετεί προσαρμοσμένο σχήμα GraphQL με βάση τα μεταδεδομένα.

### Δομή Καταλόγου Workplace

```
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      
```

Η ρίζα του καταλόγου εργασίας περιλαμβάνει το `workspace.factory.ts`, ένα αρχείο που περιέχει τη λειτουργία `createGraphQLSchema`. Αυτή η λειτουργία δημιουργεί σχήμα που αφορά το workspace χρησιμοποιώντας τα μεταδεδομένα για να προσαρμόσει ένα σχήμα για μεμονωμένους χώρους εργασίας. Με τον διαχωρισμό της κατασκευής σχήματος και επιλυτή, χρησιμοποιούμε τη λειτουργία `makeExecutableSchema`, η οποία συνδυάζει αυτά τα διακριτά στοιχεία.

Αυτή η στρατηγική αφορά όχι μόνο την οργάνωση, αλλά βοηθά και στην βελτιστοποίηση, όπως η προσωρινή αποθήκευση παραγόμενων ορισμών τύπου για την ενίσχυση της απόδοσης και κλιμακωσιμότητας.

### Κατασκευαστής Σχήματος Χώρου Εργασίας

Δημιουργεί το σχήμα GraphQL, και περιλαμβάνει τα εξής:

#### Factories:

Ειδικευμένοι κατασκευαστές για τη δημιουργία κατασκευών που σχετίζονται με το GraphQL.

- Το type.factory μεταφράζει μεταδεδομένα πεδίων σε τύπους GraphQL χρησιμοποιώντας το `TypeMapperService`.
- Το type-definition.factory δημιουργεί αντικείμενα εισαγωγής ή εξόδου GraphQL που προκύπτουν από το `objectMetadata`.

#### Τύποι GraphQL

Περιλαμβάνει παραθέσεις, εισαγωγές, αντικείμενα και κλίμακες και χρησιμεύει ως τα δομικά στοιχεία για την κατασκευή σχήματος.

#### Διεπαφές και Ορισμοί Αντικειμένων

Περιέχει το σχέδιο για οντότητες GraphQL, και περιλαμβάνει και προϋπάρχοντες και προσαρμοσμένους τύπους όπως `MONEY` ή `URL`.

#### Υπηρεσίες

Περιέχει την υπηρεσία υπεύθυνη για τη σύνδεση του FieldMetadataType με το κατάλληλο GraphQL scalar ή query modifiers.

#### Αποθήκευση

Περιλαμβάνει την κλάση `TypeDefinitionsStorage` που περιέχει επαναχρησιμοποιήσιμους ορισμούς τύπου, αποτρέποντας την επανάληψη τύπων GraphQL.

### Κατασκευαστής Επίλυσης Χώρου Εργασίας

Δημιουργεί τις λειτουργίες επίλυσης για την ανάκτηση και μετατροπή του σχήματος GraphQL.

Κάθε εργοστάσιο σε αυτόν τον κατάλογο είναι υπεύθυνο για την παραγωγή ενός διακριτού τύπου επίλυσης, όπως το `FindManyResolverFactory`, σχεδιασμένο για προσαρμοστική εφαρμογή σε διάφορους πίνακες.

### Εκτελεστής Ερωτημάτων Χώρου Εργασίας

Εκτελεί τα παραγόμενα ερωτήματα στη βάση δεδομένων και αναλύει το αποτέλεσμα.
