GraphQL-схема
GraphQL-схема — набор GraphQL-типов, созданных на основе компонентов модели данных проекта.
После публикации модели данных сервис доступа к хранилищу данных storagedata формирует GraphQL-схему согласно сущностям, заданным в модели данных проекта.
Сформированную GraphQL-схему можно просмотреть при настройке действий для экранных форм проекта по нажатию кнопки Схема GraphQL в окне Конструктор GraphQL. На GraphQL-схеме отображаются GraphQL-типы, созданные в результате публикации всех моделей данных в выбранном узле хранилища данных.
Структурные GraphQL-типы
Структурными GraphQL-типами являются следующие:
Класс: описывает структуру с атрибутами класса модели данных, включая наследуемые атрибуты, а также служебные атрибуты
_class_name
и_type_discr
.Имя этого GraphQL-типа формируется согласно шаблону
<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип класс будет иметь имяStock_Product
.Атрибуты
_class_name
и_type_discr
идентифицируют класс модели данных при использовании цепочек наследования и позволяют однозначно определить класс, к которому относится определенный экземпляр класса. С помощью этих атрибутов в результате запроса данных родительского класса можно определить, к какому дочернему классу относится возвращенный экземпляр. Значением_class_name
является псевдоним класса, а значением_type_discr
является внутренний идентификатор класса.Атрибуты
_class_name
и_type_discr
не входят в состав стандарта GraphQL.Интерфейс: описывает структуру с атрибутами интерфейса модели данных, включая наследуемые атрибуты, а также служебный атрибут с именем
_<псевдоним класса>
. Значение_<псевдоним класса>
соответствует псевдониму класса, экземпляр которого реализует интерфейс.Имя этого GraphQL-типа формируется согласно шаблону
<псевдоним проекта>_<псевдоним интерфейса>
. Например, если в модели данных проекта с псевдонимомStock
создан интерфейс с псевдонимомIAccountable
, GraphQL-тип интерфейс будет иметь имяStock_IAccountable
.Пользовательский тип: описывает структуру с атрибутами пользовательского типа, созданного в модели данных проекта.
Имя этого GraphQL-типа формируется согласно шаблону
<псевдоним проекта>_<псевдоним пользовательского типа>
. Например, если в модели данных проекта с псевдонимомStock
создан пользовательский тип с псевдонимомCDictionary
, GraphQL-тип пользовательский тип будет иметь имяStock_CDictionary
.
GraphQL-типы для выборки данных
Для выборки данных создаются следующие GraphQL-типы:
Запрос: описывает выборку экземпляров класса модели данных согласно заданным условиям.
Имя этого GraphQL-типа соответствует имени GraphQL-типа класс. Имя этого GraphQL-типа для примера выше будет
stock_product
.Этот GraphQL-тип может иметь параметры, которые позволяют делать следующее:
skip
: пропускать указанное количество экземпляров класса;take
: извлекать указанное количество экземпляров класса;where
: фильтровать экземпляры класса;order
: сортировать экземпляры класса.
Эти параметры имеют следующие типы данных:
skip
иtake
: тип Int.where
: тип условия фильтрации с именем<псевдоним проекта>_<псевдоним класса>FilterInput
. Этот тип содержит все атрибуты класса модели данных для выборки данных.order
: тип параметры сортировки с именем<псевдоним проекта>_<псевдоним класса>SortInput
. Этот тип содержит все атрибуты класса модели данных для сортировки данных.
GraphQL-тип запрос также имеет сегмент коллекции выходных данных, который описывает результирующий набор данных и является структурой с именем
<псевдоним проекта>_<псевдоним класса>CollectionSegment
. Эта структура содержит следующие элементы:pageInfo
: содержит информацию о постраничном выводе в виде структуры из элементов типа BoolhasNextPage
иhasPreviousPage
.items
: описывает коллекцию результирующих наборов данных и соответствует GraphQL-типу класс или GraphQL-типу интерфейс (см. Структурные GraphQL-типы).totalCount
: возвращает общее количество объектов в результате запроса.
Запрос по идентификатору: возвращает результирующий набор данных.
Единственным параметром этого типа является идентификатор экземпляра запрашиваемого класса.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
get<псевдоним проекта>_<псевдоним интерфейса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип запрос по идентификатору будет иметь имяget_stock_product
.
GraphQL-типы для изменения данных
Для изменения данных создаются следующие GraphQL-типы:
Входные данные мутации: содержит все атрибуты класса модели данных и используется для передачи аргументов в мутации для этого класса.
Имя этого GraphQL-типа формируется согласно шаблону
<псевдоним проекта>_<псевдоним класса>DataInput
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип входные данные мутации будет иметь имяStock_ProductDataInput
.Мутация одиночного добавления: описывает добавление одного экземпляра класса модели данных.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
add_<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип мутация одиночного добавления будет иметь имяadd_stock_product
.Аргументом для этого GraphQL-типа является тип входные данные мутации. В зависимости от типа уникального идентификатора класса модели данных выходные данные этого GraphQL-типа могут быть следующие:
Int
:MutationIdResultOfInt32
;Long
:MutationIdResultOfInt64
;GUID
:MutationIdResultOfGUID
.
Выходные данные этого GraphQL-типа содержат следующие элементы:
insertedId
: идентификатор добавленного экземпляра класса;countObjectsModified
: количество добавленных экземпляров класса;operation
:update
;objectName
: псевдоним класса, к которому применена операция.
Мутация множественного добавления: описывает добавление множества экземпляров класса модели данных.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
bulkadd_<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип мутация множественного добавления будет иметь имяbulkadd_stock_product
.Аргументом для этого GraphQL-типа является тип входные данные мутации. В зависимости от типа уникального идентификатора класса модели данных выходные данные этого GraphQL-типа могут быть следующие:
- Int:
MutationIdResultOfInt32
; - Long:
MutationIdResultOfInt64
; - GUID:
MutationIdResultOfGUID
.
Выходные данные этого GraphQL-типа содержат следующие элементы:
insertedId
: массив идентификаторов добавленных экземпляров класса;countObjectsModified
: количество добавленных экземпляров класса;operation
:update
;objectName
: псевдоним класса, к которому применена операция.
- Int:
Мутация одиночного изменения: описывает изменение одного экземпляра класса модели данных.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
update_<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип мутация одиночного изменения будет иметь имяupdate_stock_product
.Аргументом для этого GraphQL-типа является тип входные данные мутации.
Выходные данные
MutationResult
этого GraphQL-типа содержат следующие элементы:countObjectsModified
: количество измененных экземпляров класса;operation
:update
;objectName
: псевдоним класса, к которому применена операция.
Мутация множественного изменения: описывает изменение множества экземпляров класса модели данных.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
bulkupdate_<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип мутация множественного изменения будет иметь имяbulkupdate_stock_product
.Аргументом для этого GraphQL-типа является тип входные данные мутации.
Выходные данные
MutationResult
этого GraphQL-типа содержат следующие элементы:countObjectsModified
: количество измененных экземпляров класса;operation
:update
;objectName
: псевдоним класса, к которому применена операция.
Мутация удаления: описывает удаление экземпляров класса модели данных.
Имя этого GraphQL-типа записывается строчными буквами и формируется согласно шаблону
delete_<псевдоним проекта>_<псевдоним класса>
. Например, если в модели данных проекта с псевдонимомStock
создан класс с псевдонимомProduct
, GraphQL-тип мутация удаления будет иметь имяdelete_stock_product
.Аргументом для этого GraphQL-типа является тип входные данные мутации и условие
where
с типом фильтрации<псевдоним проекта>_<псевдоним класса>FilterInput
.Выходные данные
MutationResult
этого GraphQL-типа содержат следующие элементы:countObjectsModified
: количество удаленных экземпляров класса;operation
:delete
;objectName
: псевдоним класса, к которому применена операция.