Files
twenty/packages/twenty-docs/l/uk/developers/backend-development/folder-architecture-server.mdx
T
8cadd00d34 i18n - translations (#15799)
Created by Github action

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: github-actions <github-actions@twenty.com>
2025-11-13 16:34:00 +01:00

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
Виконує згенеровані запити на базі даних та аналізує результат.