-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Нужно написать метод API, который будет получать список таблиц по поисковой строке. Он будет использоваться для отрисовки интерфейса в задаче HyperLEDA/webapp#18.
В частности, это должен быть метод GET /api/v1/table/list, принимающий в качестве query-параметров:
query:str- запрос по которому будет производится поиск (по умолчанию пустая строка)page_size:int- размер страницы ответа (по умолчанию25)page:int- номер страницы (по умолчанию0)
Ответ должен выглядеть примерно следующим образом:
{
"data": {
"tables": [
{
"name": "my_table_1",
"description": "This is my first table",
"num_entries": 1234,
"num_fields": 23
},
{
"name": "my_table_2",
"description": "This is my second table",
"num_entries": 64636,
"num_fields": 12
},
{
"name": "table_3",
"description": "This is copy of my_table_1",
"num_entries": 1234,
"num_fields": 23
}
]
}
}query - запрос поиска, должен позволять делать поиск и по названию таблицы, и по её описанию. Это значит, что если введён my_table, то он должен вернуть как те таблицы, которые содержат my_table в поле name (первая и вторая таблица в примере выше), так и те, что содержат my_table в описании (третья таблица в примере выше).
Нужно будет написать метод репозитория нулевого уровня, который будет возвращать требуемые данные. Скорее всего, это будет что-то похожее на этот метод - https://github.com/HyperLEDA/db-app/blob/master/app/data/repositories/layer0/tables.py#L232, но тот, который будет получать список таблиц сразу.
Начать можно с того, чтобы получать только name и description, и потом доработать до получения num_entries и num_fields. Для получения всех таблиц, которые содержат определённую подстроку, можно использовать функцию LIKE в PostgreSQL - https://postgrespro.ru/docs/postgresql/current/functions-matching.