--- title: Kansioarkkitehtuuri info: A detailed look into our server folder architecture image: /images/user-guide/fields/field.png --- Header Palvelimen hakemistojen rakenne on seuraava: ``` server └───ability └───constants └───core └───database └───decorators └───filters └───guards └───health └───integrations └───metadata └───workspace └───utils ``` ## Ability Määrittää oikeudet ja sisältää käsittelijät kullekin yksikölle. ## Decorators Defines custom decorators in NestJS for added functionality. See [custom decorators](https://docs.nestjs.com/custom-decorators) for more details. ## Suodattimet Sisältää poikkeussuodattimia GraphQL-päätelaitteissa mahdollisesti esiintyvien poikkeusten käsittelemiseksi. ## Guards See [guards](https://docs.nestjs.com/guards) for more details. ## Terveys Sisältää julkisesti saatavilla olevan REST API:n (healthz), joka palauttaa JSONin varmistaakseen, että tietokanta toimii odotetusti. ## Metatiedot Määrittää mukautettuja objekteja ja tarjoaa GraphQL API:n (graphql/metadata). ## Työtila Luo ja palvelee mukautettua GraphQL-skeemaa metadataan pohjautuen. ### Työtilan hakemistorakenne ``` 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 ``` Työtilahakemiston juuresta löytyy `workspace.factory.ts`, tiedosto, joka sisältää `createGraphQLSchema`-toiminnon. Tämä toiminto luo työtilakohtaisen skeeman hyödyntämällä metadataa räätälöidyn skeeman luomiseksi kullekin työtilalle. Erottamalla skeeman ja ratkaisijan rakennus käytämme `makeExecutableSchema`-toimintoa, joka yhdistää nämä erilliset elementit. Tämä strategia ei vain järjestä, vaan auttaa myös optimoinnissa, kuten generoitujen tyyppimääritysten välimuistiin tallentamisessa suorituskyvyn ja skaalautuvuuden parantamiseksi. ### Työtilan Skeemanrakentaja Luo GraphQL-skeeman, ja sisältää: #### Tehtaat: Specialised constructors to generate GraphQL-related constructs. - Type.factory muuntaa kenttämetadatan GraphQL-tyypeiksi `TypeMapperService`ä käyttäen. - Type-definition.factory luo GraphQL-tulo- tai lähtöobjekteja, johdetuin `objectMetadata`sta. #### GraphQL-tyypit Sisältää luokittelut, syötteet, objektit ja skaalat ja toimii rakennuspalikoina skeemarakennukselle. #### Interfaces and Object Definitions Sisältää luonnoksia GraphQL-yksiköille, ja sisältää sekä ennalta määritellyt että mukautetut tyypit, kuten `MONEY` tai `URL`. #### Palvelut Sisältää palvelut, jotka vastaavat FieldMetadataType:n yhdistämisestä sopivaan GraphQL-skaalalle tai kyselymoduulille. #### Tallennus Sisältää `TypeDefinitionsStorage`-luokan, joka sisältää uudelleenkäytettäviä tyyppimäärityksiä, joten GraphQL-tyyppejä ei tarvitse toistaa. ### Työtilan ratkaisijarakentaja Luo ratkaisijatoiminnot GraphQL-skeeman kyselemiseen ja muokkaamiseen. Kukin tämän hakemiston tehdas on vastuussa erillisen ratkaisijatyypin tuottamisesta, kuten `FindManyResolverFactory`, joka on suunniteltu sovellettavaksi eri tauluihin. ### Työtilan kyselysuorittaja Suorittaa luodut kyselyt tietokannassa ja jäsentää tuloksen.