17-02-2021 23:20

Искать залоговые билеты с возможностью использования различных фильтров

POST   /bs-core/main/pawn-tickets/partial-load

Метод предназначен для поиска залоговых билетов с возможностью задавать набор полей в ответе, порядок сортировки элементов и различные фильтры.

Запрос

POST /bs-core/main/pawn-tickets/partial-load
{
    "fields": [
        		"name",
        		"creationDate",
        		"donor.id",
        		"branch.id",
        		"subdivision.id",
        		"client.id",
        		"id",
        		"storingPlace.id"
			  ],
    "orderBy": "id",
    "orderDirection": "ASC",
    "orderByFields": [
    					{ 
    						"field": "creationDate" 
    					},
    					{ 
    						"field": "name", 
    						"direction": "desc" 
    					}
    				 ],
    "searchFields":  [
    					{
        					"field": "creationDate",
        					"value": "not null"
    					},
    					{
        					"field": "id",
        					"value": "101342092",
        					"ornumber": "1"
    					},
    					{
        					"field": "storingPlace.id",
        					"value": "null",
        					"ornumber": "1"
    					}
    				 ],
    "countFrom": 0,
    "countTo": 10
}
Описание параметров
Параметр Обязателен Тип данных Описание
fields О [collection]

Коллекция полей, которые должны вернуться в результатах поиска.

fields._.{fieldName} О [string][255]

В качестве элементов списка могут быть указаны любые поля из залогового билета, которые не являются внешними ключами.

Например: "id", "creationDate" и так далее. 

Признаком внешнего ключа является указание в описание параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: client.id.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID которого указано в поле. Например: в объекте залоговый билет есть поле clientId, которое является внешним ключом. Это значит, что мы можем запросить любое поле объекта клиент: client.id, client.lastName и так далее. 

orderBy О [string][255]

Название поля, по которому надо делать сортировку. С релиза 2.0.0-65 для сортировки следует использовать коллецию orderByFields.

orderDirection О [enum]

Направление сортировки результатов поиска

  • DESC - по убыванию
  • ASC - по позрастанию

С релиза 2.0.0-65 для направления сортировки следует передавать направление в коллекции orderByFields.

orderByFields О [collection]

Массив полей, по которым происходит сортировка.

"orderByFields": [
     { "field": "id" },
     { "field": "creationDate", "direction": "desc" }
    ]

В этом примере сортировка происходит по полям id и creationDate. Также результат сортируется по убыванию. Для направления сортировки используется параметр creationDate. Если поле direction не указан, то сортировка по полю выполняется по возрастанию. Если в запросе на ядро переданы оба способа сортировки, то старый способ задания сортировки игнорируется. Эти изменения действуют с релиза 2.0.0-65. Смотрите также описание параметров orderBy и orderDirection.

searchFields О [collection]

Условия поиска (фильтрации) залогового билета, наличие параметра searchFields является не обязательным, однако строго рекомендуется задавать параметры фильтрации. 

searchFields._.field О [string][255]

Название поля, по которому нужно сделать фильтрацию. Правила формирования этого поля следующие: 

В качестве элементов списка могут быть указаны любые поля из сущности залоговый билет, которые не являются внешними ключами.

Например: "name", "creationDate" и так далее. 

Признаком внешнего ключа является указание в описание параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: clientId.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID котрого указано в поле. Например: в объекте залоговый билет есть поле clientId, которое является внешним ключом. Это значит, что мы можем запросить любое поле объекта клиент: client.id, client.lastName и так далее. 

searchFields._.value О [string][255]

В значении параметра может указывается как точное значение, так и нет. Для значений не полного соответствия используются различные параметры.

Для указания значений этого параметра можно использовать следующие операторы: %, like, !=, null, not null, >, <, >=, <=.

Для передачи даты используется следующий формат YYYY-MM-DD (действует с 2.0.0-65 релиза) например 2018-05-25, а для передачи даты и времени YYYY-MM-DD hh:mm:ss (например 2018-05-25 12:22:35).

Пример: 

      {
           "field": "client.id",
           "value": "123"
       },

Так и условия строгого и нестрогого неравенства, например: 

      {
           "field": "client.creationDate",
           "value": ">=2017-09-01"
       },

      {
           "field": "client.creationDate",
           "value": "<=2017-09-01"
       } ​

searchFields._.ornumber О [string][255]

Параметр для группировки значений поиска (фильтрации) в условии OR.
Поле не обязательное и используется в случаях когда нужно искать по условиям как с логической "И", но также и по условиям с логической "ИЛИ".
Например, нужно найти все записи у которых в поле1 указано значение XXXX, при этом в поле2 указано YYYY или ZZZZ.
В этом случае можно использовать поле ornumber. Значение может быть числом или символом, но уникальным в рамках одной группы условий ИЛИ. Зарезервированным значением является  -1

Пример 1

      {
           "field": "client.id",
           "value": "123"
       },

      {
           "field": "id",
           "value": "321",
           "ornumber": "1",
       },

     {
           "field": "id",
           "value": "654",
           "ornumber": "1"
       }
 В этом примере будут искаться все записи, у которых в поле clien.id указано 123 и при этом одновременно выполняется одно из условий поле id равно ​321 или поле id равно 654.
То есть, в выражении языка SQL : client.id = 123 AND (id = 321 OR id = 654)

Пример 2 (используют не все значения характерные для объекта "залоговый билет")

      {
           "field": "name",
           "value": "1%",
           "ornumber": "1",
       },

     {
           "field": "name",
           "value": "5%",
           "ornumber": "1",
       },

    {
           "field": "loanAmount",
           "value": "10000",
           "ornumber": "2",
       },

     {
           "field": "loanAmount",
           "value": "20000",
           "ornumber": "2",
       }

 В  выражении языка SQL : (name like "1%" OR name like "5%" ) AND (loanAmount = 10000 OR loanAmount = 20000)

countFrom О [int]

Смещение от начала поиска, т.е. если хотим получить с 10-ой записи, то передаем 10.

resultsQty О [int]

Количество возвращаемых записей

Ответ


                        {
    "status": "ok",
    "timestamp": 1537531842768,
    "data": [
        {
            "id": 101342092,
            "fields": {
                "name": "Залоговый билет на залог супер квартиру",
                "creationDate": "2018-09-10",
                "donor.id": null,
                "branch.id": 101301,
                "subdivision.id": null,
                "client.id": 101322764,
                "id": 101342092,
                "storingPlace.id": null
            }
        },
        {
            "id": 101342087,
            "fields": {
                "name": "Залоговый билет на залог 101744",
                "creationDate": "2018-09-10",
                "donor.id": null,
                "branch.id": 101301,
                "subdivision.id": null,
                "client.id": 101322764,
                "id": 101342087,
                "storingPlace.id": null
            }
        }
    ]
}
                    
У данной функции отсутствует описание параметров ответа