Created by Github action --------- Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-actions <github-actions@twenty.com>
131 lines
5.7 KiB
Plaintext
131 lines
5.7 KiB
Plaintext
---
|
|
title: Архітектура папок
|
|
info: A detailed look into our server folder architecture
|
|
image: Неможливо перекласти
|
|
---
|
|
|
|
<Frame>
|
|
<img src="/images/user-guide/fields/field.png" alt="Header" />
|
|
</Frame>
|
|
|
|
Структура каталогу бекенда виглядає так:
|
|
|
|
```
|
|
server
|
|
└───ability
|
|
└───constants
|
|
└───core
|
|
└───database
|
|
└───decorators
|
|
└───filters
|
|
└───guards
|
|
└───health
|
|
└───integrations
|
|
└───metadata
|
|
└───workspace
|
|
└───utils
|
|
```
|
|
|
|
## Ability
|
|
|
|
Визначає дозволи та містить обробники для кожної сутності.
|
|
|
|
## Декоратори
|
|
|
|
Визначає користувацькі декоратори в NestJS для додаткової функціональності.
|
|
|
|
Дивіться [спеціальні декоратори](https://docs.nestjs.com/custom-decorators) для отримання додаткової інформації.
|
|
|
|
## Фільтри
|
|
|
|
Містить фільтри винятків для обробки винятків, які можуть виникнути в кінцевих точках GraphQL.
|
|
|
|
## Guards
|
|
|
|
See [guards](https://docs.nestjs.com/guards) for more details.
|
|
|
|
## Health
|
|
|
|
Включає загальнодоступний REST API (healthz), який повертає JSON, щоб підтвердити чи база даних працює належним чином.
|
|
|
|
## Метадані
|
|
|
|
Визначає користувацькі об'єкти і надає API GraphQL (graphql/metadata).
|
|
|
|
## Робочий простір
|
|
|
|
Генерує та обслуговує користувацьку схему GraphQL на основі метаданих.
|
|
|
|
### Структура каталогу робочого місця
|
|
|
|
```
|
|
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`. Ця функція генерує специфічну для робочого місця схему, використовуючи метадані для налаштування схеми для окремих робочих місць. Поділяючи конструкцію схеми та вирішувача, ми використовуємо функцію `makeExecutableSchema`, яка поєднує ці окремі елементи.
|
|
|
|
Ця стратегія не тільки про організацію, але й допомагає в оптимізації, наприклад, кешуванні згенерованих визначень типів для покращення продуктивності та масштабованості.
|
|
|
|
### Будівельник схеми робочого місця
|
|
|
|
Генерує схему GraphQL і містить:
|
|
|
|
#### Фабрики:
|
|
|
|
Спеціалізовані конструктори для генерації конструкцій, пов'язаних з GraphQL.
|
|
|
|
- Завод типів перетворює метадані поля у типи GraphQL з використанням `TypeMapperService`.
|
|
- The type-definition.factory creates GraphQL input or output objects derived from `objectMetadata`.
|
|
|
|
#### Типи GraphQL
|
|
|
|
Містить перелічення, вхідні дані, об'єкти та скаляри, які служать будівельними блоками для конструкції схеми.
|
|
|
|
#### Інтерфейси та визначення об'єктів
|
|
|
|
Містить креслення для сутностей GraphQL і включає як попередньо визначені, так і користувацькі типи, такі як `MONEY` або `URL`.
|
|
|
|
#### Сервіси
|
|
|
|
Містить сервіс, відповідальний за пов'язання FieldMetadataType з відповідними скалярами або модифікаторами запитів GraphQL.
|
|
|
|
#### Сховище
|
|
|
|
Містить клас `TypeDefinitionsStorage`, який містить повторно використовувані визначення типів, запобігаючи дублюванню типів GraphQL.
|
|
|
|
### Будівельник вирішувачів робочого місця
|
|
|
|
Створює функції вирішувачів для запитів та мутувань схеми GraphQL.
|
|
|
|
Кожна фабрика в цьому каталозі відповідає за створення певного типу вирішувача, наприклад, `FindManyResolverFactory`, призначеного для адаптованого використання в різних таблицях.
|
|
|
|
### Workspace Query Runner
|
|
|
|
Виконує згенеровані запити на базі даних та аналізує результат.
|