Метод GET /api/v1/get_tasks
Краткое описание
Возвращает список задач для указанного Коннектора с поддержкой фильтрации, пагинации и фильтра по статусу. Требуется аутентификация (Depends(check_login_pass)).
Отобрать команды, еще не обработанные Коннектором, можно с использованием параметра include_empty_status (true/false).
Входные параметры
Параметры запроса (query):
id_connector(string, обязательный)Уникальный идентификатор коннектора
Все возвращаемые задачи будут принадлежать этому коннектору
Пример: "conn-prod-001"
id_project(string, опционально)Фильтр по идентификатору проекта
Если указано — вернёт только задачи для этого проекта в рамках коннектора
Проект должен существовать
Пример: "proj-123"
include_empty_status(boolean, опционально, default=True)Если True — включить задачи со статусом NULL (ещё не обработанные)
Если False — исключить задачи с пустым статусом (вернёт только задачи со статусами)
Используется для получения либо необработанных, либо обработанных задач
Пример: True
dt_from(datetime, опционально)Вернуть только задачи с ecc_dt > dt_from
Формат: ISO 8601 (например "2025-01-01T00:00:00")
Использует поле ecc_dt (дата/время последнего изменения)
Пример: "2025-11-01T00:00:00"
dt_to(datetime, опционально)Вернуть только задачи с ecc_dt < dt_to
Формат: ISO 8601
Пример: "2025-11-30T23:59:59"
page_size(int, опционально, default=100)Размер страницы (LIMIT)
Максимальное количество задач в одном ответе
Пример: 50
offset(int, опционально, default=0)Смещение для пагинации (OFFSET)
Пример: 100 (пропустить первые 100 задач)
Authorization(обязательный)Токен аутентификации (при наличии зависимости check_login_pass)
Алгоритм работы метода
ЭТАП 1: Валидация Коннектора
Проверяется существование коннектора с
id_connectorЕсли коннектор не найден — возвращается HTTP 404
Функция:
connector_exists(id_connector, db_session)
ЭТАП 2: Валидация проекта (опционально)
Если параметр
id_projectуказан:Проверяется существование проекта (id_connector + id_project)
Если проект не найден — возвращается HTTP 404
Функция:
project_exists(id_connector, id_project, db_session)
Если
id_projectне указан — эта проверка пропускается
ЭТАП 3: Формирование базовых SQL запросов
Создаются два statement-а:
count_statement:
SELECT COUNT(*)для получения общего количества задачstatement:
SELECT Taskдля выборки самих задач
Базовое WHERE условие:
Task.id_connector == id_connector
ЭТАП 4: Применение фильтра по статусу
Если
include_empty_status == True(по умолчанию):Добавляется WHERE Task.status == NULL
Возвращаются только необработанные задачи (со статусом NULL)
Если
include_empty_status == False:Условие НЕ добавляется
Возвращаются все задачи, включая обработанные (с не-NULL статусами)
ЭТАП 5: Применение фильтра по проекту
Если
id_projectуказан:Добавляется WHERE
Task.id_project == id_projectК обоим statement-ам (count и select)
ЭТАП 6: Применение фильтров по датам
Если
dt_fromуказана:Добавляется WHERE Task.ecc_dt > dt_from
К обоим statement-ам
Если
dt_toуказана:Добавляется WHERE Task.ecc_dt < dt_to
К обоим statement-ам
ЭТАП 7: Получение общего количества
Выполняется
count_statementПолучается
total_count— количество записей, удовлетворяющих фильтрам
ЭТАП 8: Применение пагинации
К statement добавляется:
ORDER BY Task.ecc_dt(сортировка по дате изменения)LIMIT page_sizeOFFSET offset
Выполняется запрос и получается список tasks
ЭТАП 9: Формирование и возврат ответа
Возвращается объект
TasksPageс полями:count: общее количество задач (без учёта paging)limit: размер страницыoffset: смещениеdata: список объектов Task
Успешный ответ (200 OK)
Формат: JSON, схема TasksPage
Пример ответа:
{ "count": 150, "limit": 100, "offset": 0, "data": [ { "id_task": "550e8400-e29b-41d4-a716-446655440000", "id_connector": "conn-prod-001", "id_project": "proj-123", "status": null, "status_info": null, "command_type": "exec", "data": { "action": "extract", "source": "1c" }, "timestamp": "2025-11-14T12:34:56+03:00", "created_by": "jdoe", "updated_by": null, "ecc_dt": "2025-11-14T12:34:56+03:00" }, { "id_task": "660e8400-e29b-41d4-a716-446655440001", "id_connector": "conn-prod-001", "id_project": "proj-123", "status": null, "status_info": null, "command_type": "exec", "data": { "action": "validate", "source": "1c" }, "timestamp": "2025-11-14T11:20:30+03:00", "created_by": "jane", "updated_by": null, "ecc_dt": "2025-11-14T11:20:30+03:00" } // ... ещё задачи до page_size ] }