MST-173: Existing statistics api modified to support chunk streaming mode (#316)

This commit is contained in:
Vladimir Pankrashkin 2018-04-20 21:29:58 +03:00 committed by Pavel Popov
parent 9fbdcd8101
commit cd58cb5dbb

View File

@ -292,19 +292,24 @@ typedef base.InvalidRequest InvalidRequest
/** /**
* Данные запроса к сервису. Формат и функциональность запроса зависят от DSL. * Данные запроса к сервису. Формат и функциональность запроса зависят от DSL.
* DSL содержит условия выборки, а также id мерчанта, по которому производится выборка. * DSL содержит условия выборки, а также id мерчанта, по которому производится выборка.
* continuation_token - токен, который передается в случае обращения за следующим блоком данных, соответствующих dsl
*/ */
struct StatRequest { struct StatRequest {
1: required string dsl 1: required string dsl
2: optional string continuation_token
} }
/** /**
* Данные ответа сервиса. * Данные ответа сервиса.
* data - данные, тип зависит от целевой функции. * data - данные, тип зависит от целевой функции.
* total_count - ожидаемое общее количество данных (т.е. размер всех данных результата, без ограничений по количеству) * total_count - ожидаемое общее количество данных (т.е. размер всех данных результата, без ограничений по количеству)
* continuation_token - токен, сигнализирующий о том, что в ответе передана только часть данных, для получения следующей части
* нужно повторно обратиться к сервису, указав тот-же набор условий и continuation_token. Если токена нет, получена последняя часть данных.
*/ */
struct StatResponse { struct StatResponse {
1: required StatResponseData data 1: required StatResponseData data
2: optional i32 total_count 2: optional i32 total_count
3: optional string continuation_token
} }
/** /**
@ -320,37 +325,36 @@ union StatResponseData {
} }
/** /**
* Ошибка превышения максимального размера блока данных, доступного для отправки клиенту. * Ошибка обработки переданного токена, при получении такой ошибки клиент должен заново запросить все данные, соответсвующие dsl запросу
* limit - текущий максимальный размер блока.
*/ */
exception DatasetTooBig { exception BadToken {
1: i32 limit; 1: string reason
} }
service MerchantStatistics { service MerchantStatistics {
/** /**
* Возвращает набор данных о платежах * Возвращает набор данных о платежах
*/ */
StatResponse GetPayments(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2) StatResponse GetPayments(1: StatRequest req) throws (1: InvalidRequest ex1, 3: BadToken ex3)
/** /**
* Возвращает набор данных об инвойсах * Возвращает набор данных об инвойсах
*/ */
StatResponse GetInvoices(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2) StatResponse GetInvoices(1: StatRequest req) throws (1: InvalidRequest ex1, 3: BadToken ex3)
/** /**
* Возвращает набор данных о покупателях * Возвращает набор данных о покупателях
*/ */
StatResponse GetCustomers(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2) StatResponse GetCustomers(1: StatRequest req) throws (1: InvalidRequest ex1, 3: BadToken ex3)
/** /**
* Возвращает набор данных о выплатах * Возвращает набор данных о выплатах
*/ */
StatResponse GetPayouts(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2) StatResponse GetPayouts(1: StatRequest req) throws (1: InvalidRequest ex1, 3: BadToken ex3)
/** /**
* Возвращает аггрегированные данные в виде набора записей, формат возвращаемых данных зависит от целевой функции, указанной в DSL. * Возвращает аггрегированные данные в виде набора записей, формат возвращаемых данных зависит от целевой функции, указанной в DSL.
*/ */
StatResponse GetStatistics(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2) StatResponse GetStatistics(1: StatRequest req) throws (1: InvalidRequest ex1, 3: BadToken ex3)
} }