Получение номера операции

Содержание раздела
  1. Получение номера операции
    1. Особенности возврата номера операции
      1. Запрос без метки времени
      2. Запрос с меткой времени
    2. URL
    3. Заголовки запроса
      1. [ x-request-id ]
    4. Тело запроса
    5. Примеры запросов и ответов
      1. Запрос по указанной метке времени в логической таблице
      2. Запрос последней операции в логической таблице
      3. Запрос последней операции в логической БД
      4. Запрос с неуспешным ответом

GET-метод возвращает номер операции записи:

  • указанной успешной в сущности,
  • последней успешной в сущности,
  • последней завершенной (успешно или нет) в логической БД.

Получение номеров операции доступно в сущностях:

Особенности возврата номера операции

Все операции с меньшими номерами, чем у возвращаемого, гарантированно завершены на указанную метку времени. Этот принцип сохраняется, даже если фактический порядок завершения операций отличается от порядка их номеров.

Запрос без метки времени

Запрос возвращает:

  • [если нет завершенных операций] -1;
  • [иначе] в зависимости от URL:
    • [для сущности] номер последней успешно завершенной операции;
    • [для логической БД] номер* последней операции, завершенной успешно или нет.

* При наличии открытой дельты в логической БД номер выбирается среди операций, выполненных до дельты.

Запрос с меткой времени

Запрос возвращает:

  • [если нет операций, завершенных к указанному времени] -1;
  • [иначе] наибольший номер среди операций, завершенных к указанному времени.

URL

GET {baseUrl}/api/v1/datamarts/{datamart}/entities/{entity}/cn/{ts}

Получение номера для успешно завершенной операции, имеющей метку времени ts, в таблице или представлении datamart.entity.

GET {baseUrl}/api/v1/datamarts/{datamart}/entities/{entity}/cn

Получение номера для последней успешно завершенной операции в таблице или представлении datamart.entity.

GET {baseUrl}/api/v1/datamarts/{datamart}/cn

Получение номера для последней завершенной (успешно или нет) операции в логической БД datamart.

Где:

  • baseUrl — адрес ноды Prostore, состоящий из IP-адреса или доменного имени и номера порта;
  • datamart — имя логической базы данных, в которой была выполнена операция записи;
  • entity — имя таблицы или представления, для которого запрашивается информация об операции;
  • ts — метка времени операции в UTC- или Unix-формате.

Заголовки запроса

[ x-request-id ]

Задает уникальный идентификатор HTTP-запроса. Если не указан, система генерирует UUID-значение и возвращает его в качестве идентификатора в ответе.

Тело запроса

Тело запроса отсутствует.

Примеры запросов и ответов

Запрос по указанной метке времени в логической таблице

Запрос по UTC-метке времени 2024-12-13 06:51:25.055:

curl -X 'GET' \
  'http://localhost:9090/api/v1/datamarts/marketing/entities/sales/cn/2024-12-13%2006%3A51%3A25.055' \
  -H 'x-request-id: c214035f-cac5-4a77-a988-4750c3ad3c27' 

Запрос по Unix-метке времени 1734072685055000, соответствующей 2024-12-13 06:51:25.055:

curl -X 'GET' \
  'http://localhost:9090/api/v1/datamarts/marketing/entities/sales/cn/1734072685055000' \
  -H 'x-request-id: 6accb5a2-33b8-4fb8-be74-5be45189b6a5' 

Ответ:

{
  "cn": 1734072685012000
}

Запрос последней операции в логической таблице

Запрос:

curl -X 'GET' \
  'http://localhost:9090/api/v1/datamarts/marketing/entities/sales/cn' \
  -H 'x-request-id: 296af6fc-9a4a-44cc-b664-bc5ae0a884a8' 

Ответ:

{
  "cn": 1734072685012000
}

Запрос последней операции в логической БД

Запрос:

curl -X 'GET' \
  'http://localhost:9090/api/v1/datamarts/marketing/cn' \
  -H 'x-request-id: cbdee094-6d25-4129-af3e-475ffaaac786'

Ответ:

{
  "cn": 1738439315012253
}

Запрос с неуспешным ответом

Запрос:

curl -X 'GET' \
  'http://localhost:9090/api/v1/datamarts/marketing4/cn' \
  -H 'x-request-id: 13ebe560-9ba2-4748-a852-17d8af69fd2f' 

Ответ:

{
  "exceptionMessage": "Database marketing4 does not exist"
}