Перейти к основному содержанию
Header
Структура серверной директории следующая:
server
  └───ability
  └───constants 
  └───core
  └───database
  └───decorators
  └───filters
  └───guards
  └───health
  └───integrations
  └───metadata
  └───workspace
  └───utils

Ability

Определяет разрешения и включает обработчики для каждого объекта.

Декораторы

Определяет пользовательские декораторы в NestJS для расширенной функциональности. Смотрите пользовательские декораторы для более подробной информации.

Фильтры

Includes exception filters to handle exceptions that might occur in GraphQL endpoints.

Guards

Смотрите защиты для более подробной информации.

Health

Включает общедоступный REST API (healthz), который возвращает JSON, чтобы подтвердить, что база данных работает должным образом.

Метаданные

Определяет пользовательские объекты и предоставляет GraphQL API (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, которая объединяет эти отдельные элементы. This strategy is not just about organization, but also helps with optimization, such as caching generated type definitions to enhance performance and scalability.

Workspace Schema builder

Генерирует GraphQL схему и включает:

Фабрики:

Специализированные конструкторы для генерации связанных с GraphQL конструкций.
  • Фабрика типов переводит метаданные поля в типы GraphQL, используя TypeMapperService.
  • Фабрика определения типов создает объекты ввода или вывода GraphQL на основе objectMetadata.

Типы GraphQL

Включает перечисления, входы, объекты и скаляры и служит строительными блоками для построения схемы.

Интерфейсы и определение объектов

Содержит чертежи для GraphQL сущностей и включает как предопределенные, так и пользовательские типы, такие как MONEY или URL.

Сервисы

Содержит сервис, ответственный за ассоциацию FieldMetadataType с соответствующим скаляром GraphQL или модификаторами запроса.

Хранилище

Включает класс TypeDefinitionsStorage, содержащий переиспользуемые определения типов, предотвращая дублирование GraphQL типов.

Конструктор резолверов рабочей области

Создает функции резолверов для запроса и изменения схемы GraphQL. Каждая фабрика в этом каталоге отвечает за создание отдельного типа резолвера, как, например, FindManyResolverFactory, предназначенной для адаптируемого применения в различных таблицах.

Выполнители запросов рабочей области

Выполняет сгенерированные запросы в базе данных и анализирует результат.