Запрос данных таблиц

  1. Запрос на получение данных таблиц осуществляется при помощи метода (поле “method”) getTableDataPredicate.

В качестве параметров (поле “params”) указывается следующее:

  • entityName - наименование таблицы
  • schemaName - наименование схемы
  • aggregate - блок задания агрегирующих функций
  • limit - объем выборки
  • offset - номер записи, с которой начать выборку
  • primaryKey - наименование поля - первичного ключа
  • currentKey - текущее значение первичного ключа. Его можно не задавать, но если задано - то параметр offset игнорируется и вернется именно та страница данных, на которой есть запись с указанным значением
  • join - таблицы, которые необходимо присоединить к результатам запроса. Для каждой таблицы указывается:
    • schema - имя схемы
    • entity - имя таблицы
    • key - поле основной таблицы, по которому соединяем
    • entityKey - поле присоединяемой таблицы
    • table_alias - псевдоним, который присваивается присоединяемой таблице
    • parent_table_alias - псевдоним основной таблицы
    • virtual - признак, если присоединяется виртуальное поле таблицы
  • fields - поля для загрузки. Для каждого поля определяется:
    • table_alias - псевдоним таблицы, которой принадлежит данное поле
    • subfields - поля связанной с данным полем таблицы, которые следует отобразить вместо него (если поле является внешним ключом)
    • subfields_table_alias - соответствующие subfields псевдонимы таблиц
    • subfields_navigate_alias - псевдоним базовой таблицы
    • subfields_key - ключ базовой таблицы
  • predicate - предикат
    • operands - операнды
    • levelup - используется для многоуровневых условий
    • field - поле
    • path - игнорируется
    • op - оператор (см. значения в Фильтрации по умолчанию).
    • value - второй операнд
    • search_in_key - искать данные также и в ключе
    • table_alias - псевдоним таблицы, в которой находится поле
    • strict - истина, если операнды соединяются по “И”
[
  {
    "entityName": "ticket_flights",
    "schemaName": "bookings",
    "predicate": {
      "strict": true,
      "operands": [
        {
          "levelup": false,
          "operand": {
            "field": "fare_conditions",
            "path": [
              "fare_conditions"
            ],
            "op": "EQ",
            "value": "Economy",
            "search_in_key": false,
            "table_alias": "t"
          }
        },
        {
          "levelup": false,
          "operand": {
            "field": "amount",
            "path": [
              "amount"
            ],
            "op": "G",
            "value": "25000",
            "search_in_key": false,
            "table_alias": "t"
          }
        }
      ]
    },
    "aggregate": [
      {
        "func": "avg",
        "field": "amount"
      }
    ],
    "limit": "10",
    "offset": 20,
    "primaryKey": "ticket_no",
    "currentKey": "",
    "fields": {
      "ticket_no": {
        "table_alias": "t",
        "subfields": null,
        "hidden": false
      },
      "flight_id": {
        "table_alias": "t",
        "subfields": [
          "flight_no",
          "airport_code"
        ],
        "subfields_navigate_alias": "t0",
        "subfields_table_alias": [
          "t0",
          "t1"
        ],
        "subfields_key": "flight_id"
      },
      "fare_conditions": {
        "table_alias": "t"
      },
      "amount": {
        "table_alias": "t"
      }
    },
    "join": [
      {
        "key": "flight_id",
        "virtual": false,
        "schema": "bookings",
        "entity": "flights",
        "table_alias": "t0",
        "parent_table_alias": "t",
        "entityKey": "flight_id"
      },
      {
        "key": "departure_airport",
        "virtual": false,
        "schema": "bookings",
        "entity": "airports_data",
        "table_alias": "t1",
        "parent_table_alias": "t0",
        "entityKey": "airport_code"
      }
    ],
    "order": [],
    "process": null,
    "functions": [],
    "format": "array",
    "desc": "Загрузка таблицы \"Flight segment\""
  }
]

Если запрос прошел успешно, то в ответ сервер пришлет следующие данные:

{
  "jsonrpc": "2.0",
  "result": {
    "data": [
      [
        "0005433805700",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433763343",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005434171107",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433785282",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433785263",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433763347",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433805688",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005434171043",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433763334",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ],
      [
        "0005433805706",
        "{\"f1\":\"PG0356 LED\",\"f2\":\"9348\"}",
        "Economy",
        "62100.00"
      ]
    ],
    "records": [
      {
        "count": "161039"
      }
    ],
    "offset": 20,
    "fields": [
      "ticket_no",
      "flight_id",
      "fare_conditions",
      "amount"
    ],
    "sql": "SELECT  \"t\".\"ticket_no\", (row_to_json(row(COALESCE(t0.\"flight_no\"::text,'')||' '|| COALESCE(t1.\"airport_code\"::text,''), t0.\"flight_id\"::text))::text) collate \"C\" as \"flight_id\", \"t\".\"fare_conditions\", \"t\".\"amount\" FROM \"bookings\".\"ticket_flights\" as t  left join \"bookings\".\"flights\" as \"t0\" on \"t\".\"flight_id\" = \"t0\".\"flight_id\" left join \"bookings\".\"airports_data\" as \"t1\" on \"t0\".\"departure_airport\" = \"t1\".\"airport_code\" where (\"t\".\"fare_conditions\" = 'Economy') AND (\"t\".\"amount\" > '25000')   LIMIT 10 OFFSET 20",
    "avg(amount)": [
      {
        "avg": "40528.439073764740"
      }
    ]
  },
  "error": null,
  "usename": "",
  "pids": 0
}
  • error - код ошибки со значением “null”;
  • jsonrpc - версия протокола со значением “2.0”;
  • result - данные, которые вернул метод:
    • data - непосредственно список записей таблицы;
    • offset - смещение записей, при запросе строк не с первой строки;
    • records - отображает количество записей таблицы;
    • sql - SQL-запрос к БД;
  • usename - логин пользователя, если была осуществлена авторизация.