Files
twenty/packages/twenty-docs/l/vi/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
4.4 KiB
Plaintext

---
title: Cấu trúc Thư mục
info: A detailed look into our server folder architecture
image: /images/user-guide/fields/field.png
---
<Frame>
<img src="/images/user-guide/fields/field.png" alt="Header" />
</Frame>
Cấu trúc thư mục backend như sau:
```
server
└───ability
└───constants
└───core
└───database
└───decorators
└───filters
└───guards
└───health
└───integrations
└───metadata
└───workspace
└───utils
```
## Ability
Xác định quyền và bao gồm các bộ xử lý cho từng thực thể.
## Decorators
Xác định các decorator tùy chỉnh trong NestJS để thêm tính năng.
Xem [decorator tùy chỉnh](https://docs.nestjs.com/custom-decorators) để biết thêm chi tiết.
## Filters
Bao gồm các bộ lọc ngoại lệ để xử lý những ngoại lệ có thể xảy ra ở các điểm cuối GraphQL.
## Guards
Xem [bảo vệ](https://docs.nestjs.com/guards) để biết thêm chi tiết.
## Health
Bao gồm một API REST công khai (healthz) để kiểm tra cơ sở dữ liệu có hoạt động như mong đợi không.
## Siêu dữ liệu
Xác định các đối tượng tùy chỉnh và cung cấp một API GraphQL (graphql/metadata).
## Workspace
Tạo và cung cấp lược đồ GraphQL tùy chỉnh dựa trên metadata.
### Cấu trúc Thư mục Workspace
```
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
```
Gốc của thư mục workspace bao gồm `workspace.factory.ts`, một tệp chứa hàm `createGraphQLSchema`. Hàm này tạo ra lược đồ đặc thù cho workspace bằng cách sử dụng metadata để điều chỉnh lược đồ cho từng workspace cụ thể. Bằng cách tách biệt việc xây dựng lược đồ và bộ giải, chúng tôi sử dụng hàm `makeExecutableSchema`, kết hợp các yếu tố rời rạc này.
Chiến lược này không chỉ về tổ chức, mà còn giúp tối ưu hóa, như caching các định nghĩa kiểu để cải thiện hiệu suất và khả năng mở rộng.
### Workspace Schema builder
Tạo ra lược đồ GraphQL, và bao gồm:
#### Factories:
Các cấu trúc đặc biệt hóa để tạo dựng các cấu trúc liên quan đến GraphQL.
- type.factory chuyển đổi siêu dữ liệu trường thành các kiểu GraphQL bằng cách sử dụng `TypeMapperService`.
- type-definition.factory tạo ra các đối tượng đầu vào hoặc đầu ra của GraphQL từ `objectMetadata`.
#### GraphQL Types
Bao gồm các enumeration, inputs, objects và scalars, và phục vụ như các khối xây dựng cho việc xây dựng lược đồ.
#### Giao diện và Định nghĩa Đối tượng
Chứa các bản vẽ cho các thực thể GraphQL, và bao gồm cả các kiểu định sẵn và tùy chỉnh như `MONEY` hoặc `URL`.
#### Dịch vụ
Chứa dịch vụ chịu trách nhiệm liên kết FieldMetadataType với các loại định lượng hoặc chỉnh lý truy vấn GraphQL thích hợp.
#### Lưu trữ
Bao gồm lớp `TypeDefinitionsStorage` chứa các định nghĩa kiểu tái sử dụng, ngăn ngừa việc trùng lặp các kiểu GraphQL.
### Workspace Resolver Builder
Tạo ra các hàm bộ giải cho việc truy vấn và sửa đổi lược đồ GraphQL.
Mỗi nhà máy trong thư mục này chịu trách nhiệm tạo ra một loại bộ giải riêng biệt, chẳng hạn như `FindManyResolverFactory`, được thiết kế để ứng dụng linh hoạt trên nhiều bảng.
### Workspace Query Runner
Chạy các truy vấn được tạo ra trên cơ sở dữ liệu và phân tích kết quả.