Метод GET /v1/db-connections

Краткое описание

Возвращает список всех сохранённых конфигураций подключений к базам данных с поддержкой фильтрации и пагинации. Требуется аутентификация (если настроена).

Входные параметры

Параметры запроса (query):

  1. page_size (int, опционально, default=100)

    • Размер страницы (LIMIT)

    • Максимальное количество конфигураций в одном ответе

  2. offset (int, опционально, default=0)

    • Смещение для пагинации (OFFSET)

  3. name (string, опционально)

    • Фильтр по имени конфигурации (точное совпадение или LIKE)

  4. host (string, опционально)

    • Фильтр по адресу хоста

  5. port (int, опционально)

    • Фильтр по номеру порта

  6. database (string, опционально)

    • Фильтр по имени базы данных

  7. dt_from (datetime, опционально)

    • Вернуть только конфигурации с ecc_dt > dt_from

    • Формат: ISO 8601

  8. dt_to (datetime, опционально)

    • Вернуть только конфигурации с ecc_dt < dt_to

    • Формат: ISO 8601

Заголовки:

  1. Authorization (опционально)

    • Токен аутентификации (если требуется по настройкам приложения)

Алгоритм работы метода

ЭТАП 1: Валидация параметров

  • Проверяется корректность параметров фильтрации

  • Если параметры некорректны — возвращается HTTP 400

ЭТАП 2: Формирование базовых SQL запросов

  • Создаются два statement-а:

    • count_statement: SELECT COUNT(*) для подсчёта общего количества

    • statement: SELECT DBConnection для выборки конфигураций

ЭТАП 3: Применение фильтров

Каждый переданный фильтр применяется как к count_statement, так и к statement:

  • Если name указано:

    • Добавляется WHERE DBConnection.name LIKE '%name%' или == name

  • Если host указано:

    • Добавляется WHERE DBConnection.host == host

  • Если port указано:

    • Добавляется WHERE DBConnection.port == port

  • Если database указано:

    • Добавляется WHERE DBConnection.database == database

  • Если dt_from указана:

    • Добавляется WHERE DBConnection.ecc_dt > dt_from

  • Если dt_to указана:

    • Добавляется WHERE DBConnection.ecc_dt < dt_to

ЭТАП 4: Получение общего количества

  • Выполняется count_statement

  • Получается total_count — количество конфигураций, удовлетворяющих фильтрам

ЭТАП 5: Применение пагинации

  • К statement добавляется:

    • ORDER BY DBConnection.ecc_dt (сортировка по дате изменения)

    • LIMIT page_size

    • OFFSET offset

  • Выполняется запрос и получается список конфигураций

ЭТАП 6: Преобразование и возврат

  • Каждая конфигурация преобразуется в DBConnectionReadSchema

  • Пароль НИКОГДА не включается в ответ (только для безопасности)

  • Возвращается объект со списком конфигураций

Успешный ответ (200 OK)

Формат: JSON

Пример ответа:

{ "count": 12, "limit": 100, "offset": 0, "data": [ { "id": "db-conn-001", "name": "Production Database", "host": "prod-db.example.com", "port": 5432, "database": "production_db", "username": "app_user", "ssl_mode": "require", "created_at": "2025-11-01T10:30:00+03:00", "updated_at": "2025-11-14T15:20:10+03:00", "ecc_dt": "2025-11-14T15:20:10+03:00", "description": "Main production database" }, { "id": "db-conn-002", "name": "Development Database", "host": "dev-db.local", "port": 5432, "database": "development_db", "username": "dev_user", "ssl_mode": "disable", "created_at": "2025-11-05T09:15:00+03:00", "updated_at": "2025-11-12T14:45:30+03:00", "ecc_dt": "2025-11-12T14:45:30+03:00", "description": "Development environment database" } // ... другие конфигурации до page_size ] }