--- title: Arquitectura de Directoris info: A detailed look into our server folder architecture image: /images/user-guide/fields/field.png --- Header L'estructura del directori del backend és la següent: ``` server └───ability └───constants └───core └───database └───decorators └───filters └───guards └───health └───integrations └───metadata └───workspace └───utils ``` ## Ability Defineix permisos i inclou manejadors per a cada entitat. ## Decoradors Defineix decoradors personalitzats en NestJS per a funcionalitat afegida. See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details. ## Filtres Inclou filtres d'excepcions per gestionar les excepcions que poden ocórrer en els punts finals de GraphQL. ## Guards See [guards](https://docs.nestjs.com/guards) for more details. ## Salut Inclou una API REST pública (healthz) que retorna un JSON per confirmar si la base de dades funciona correctament. ## Metadades Defineix objectes personalitzats i fa disponible una API GraphQL (graphql/metadata). ## Espai de treball Genera i serveix esquemes GraphQL personalitzats basats en les metadades. ### Estructura del Directori de l'Espai de Treball ``` 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 l'arrel del directori de l'espai de treball s'inclou l'arxiu `workspace.factory.ts`, que conté la funció `createGraphQLSchema`. Aquesta funció genera un esquema específic d'espai de treball utilitzant les metadades per adaptar un esquema per als espais de treball individuals. Separant la construcció de l'esquema i el resolvent, utilitzem la funció `makeExecutableSchema`, que combina aquests elements discrets. Aquesta estratègia no es tracta només d'organització, sinó que també ajuda en l'optimització, com ara en l'emmagatzematge a la memòria cau de definicions de tipus generades per millorar el rendiment i l'escalabilitat. ### Constructor de l'Esquema de l'Espai de Treball Genera l'esquema de GraphQL, i inclou: #### Fàbriques: Constructors especialitzats per generar construccions relacionades amb GraphQL. - La fàbrica de tipus tradueix les metadades de camp a tipus GraphQL utilitzant `TypeMapperService`. - La fàbrica de definició de tipus crea objectes d'entrada o sortida GraphQL derivats de `objectMetadata`. #### Tipus de GraphQL Inclou enumeracions, entrades, objectes i escalares, i serveix com a blocs de construcció per a la construcció de l'esquema. #### Interfícies i Definicions d'Objectes Conté els plànols per a les entitats GraphQL, i inclou tant tipus predefinits com personalitzats com `DINERS` o `URL`. #### Serveis Conté el servei responsable d'associar FieldMetadataType amb el seu escalar GraphQL apropiat o modificadors de consultes. #### Emmagatzematge Inclou la classe `TypeDefinitionsStorage` que conté definicions de tipus reutilitzables, prevenint la duplicació de tipus GraphQL. ### Constructor de Resolvent de l'Espai de Treball Crea funcions de resolvent per consultar i modificar l'esquema GraphQL. Each factory in this directory is responsible for producing a distinct resolver type, such as the `FindManyResolverFactory`, designed for adaptable application across various tables. ### Workspace Query Runner Executa les consultes generades sobre la base de dades i interpreta el resultat.