TDG Documentation portal logo
Помощь
Обновлена 22 июня 2026 г. в 15:31

Запросы к данным по версии

Запросы к данным по версии выполняются путем указания поля version в теле HTTP-запроса или запроса GraphQL.

В TDG есть две категории таких запросов:

  • Исторические данные - данные объектов, которые имеют более раннюю версию, чем указанная, или ту же версию, что и указанная в запросе.
  • Исторические модификации - данные об изменениях объектов, которые имеют более раннюю версию, чем указанная, или ту же версию, что и указанная в запросе.

Исторические данные

Запросы на чтение исторических данных полезны, например, когда часть информации была удалена в последней версии объекта.

Вспомним пример модели данных и рассмотрим запрос на чтение исторических данных Country.

Пример. У нас есть тип объекта Country с информацией о телефонном коде страны. Но в последней версии Country правильная информация о телефонном коде была изменена.

Чтобы получить правильную информацию о телефонном коде, нужно посмотреть предыдущую версию Country.

Сделать это можно в два этапа:

  1. Узнайте последнюю версию Country
  2. Сделайте запрос на чтение данных предыдущий версии Country

Чтобы проверить последнюю версию, добавьте поле version в параметры запроса GraphQL:

{  Country(title: "Russia") {    title    phone_code    version  }}

Пример ответа:

{  "data": {    "Country": [      {        "version": "1515",        "title": "Russia",        "phone_code": "+8"      }    ]  }}

Скопируйте из ответа значение version, вычтите из него единицу и выполните запрос GraphQL на предыдущую версию:

{  Country(title: "Russia", version: "1514") {    title    phone_code    version  }}

Пример ответа:

{  "data": {    "Country": [      {        "version": "1514",        "title": "Russia",        "phone_code": "+7"      }    ]  }}

Вы можете перебирать предыдущие версии, пока не обнаружите версию с нужной информацией.

Вы также можете запросить все версии объекта, используя поле all_versions, и ограничить результат ответа при помощи пагинации:

{  Country(title: "Russia", all_versions: true, first: 5) {    title    phone_code  }}

Исторические модификации

Запросы на исторические модификации данных полезны, например, когда нужно изменить или удалить данные в конкретной версии объекта.

TDG поддерживает следующие запросы на изменение данных (mutations):

Для осуществления запросов на изменение данных вы можете использовать HTTP-запросы или запросы GraphQL.

Ниже приведены примеры обоих вариантов запросов.

Вставка объекта

Когда вы добавляете объект, поле version определяет, какая версия объекта добавляется или заменяется.

Пример. Добавьте объект типа Country с title: "Poland" и phone_code: "+48".

Пример запроса GraphQL:

mutation {  Country(    insert: {      version: "1515"      title: "Poland"      phone_code: "+48"})   {    version    title    phone_code  }}

Пример HTTP-запроса с использованием утилиты curl:

curl –request POST \   –url 'http://172.19.0.2:8080/graphql?=' \   –header 'Authorization: Test f0d4d72b-2232-42ff-a1ee-1127a93df0d3' \   –data '{"query":"mutation {Country(insert: {version: "1515", title: \"Poland\", phone_code:\"+48\"}) {version title phone_code}}"}'

Ответ в обоих случаях будет одинаковым:

{  "data": {    "Country": [      {        "version": "1515",        "title": "Poland",        "phone_code": "+48"      }    ]  }}

Обновление объекта

При обновлении данных в поле version указывается версия объекта, подлежащая изменению.

Пример. Вернемся к типу объекта Country. В запросе укажем версию 1515 и обновим поле phone_code на значение +7.

Пример запроса GraphQL:

mutation {  Country(title: "Russia", version: "1515" update:[["set", "phone_code", "+7"]]) {    version    title    phone_code  }}

Пример HTTP-запроса с использованием утилиты curl:

curl –request POST \   –url 'http://172.19.0.2:8080/graphql?=' \   –header 'Authorization: Test f0d4d72b-2232-42ff-a1ee-1127a93df0d3' \   –data '{"query":"mutation {Country(update: {title: "Russia", version: "1515" [[\"set\", \"phone_code\", \"+7\"]]) {title version phone_code}}"}'

Ответ в обоих случаях будет одинаковым:

{  "data": {    "Country": [      {        "version": "1515"        "title": "Russia"        "phone_code": "+7"      }    ]  }}

Удаление объекта

При удалении данных в поле version указывается версия объекта, подлежащая удалению.

Пример. Удалите объект Country с версией 1514.

Пример запроса GraphQL:

mutation {  Country(delete: true, title: "Russia", version: "1514") {    title    version    phone_code  }}

Пример ответа:

{  "data": {    "Country": [      {        "version": "1514"        "phone_code": "+7",        "title": "Russia"      }    ]  }}

Ограничения запросов

Использование дополнительных параметров блока hard-limits в config.yml помогает контролировать нагрузку на сервер. Вы можете задать следующие параметры:

  • scanned - ограничивает прохождение запроса в спейсах. По умолчанию: 2000
  • returned - ограничивает возвращаемые объекты в ответе. По умолчанию: 100. При превышении одного из ограничений выполнение запроса прекращается и возвращается ошибка

Пример заполнения параметров:

hard-limits:  scanned: 1500  returned: 200