Где реализовать функционал логирования запросов?

Рейтинг: 0Ответов: 0Опубликовано: 31.01.2023

Вечер добрый!

У меня есть функиция, которая отвечает за работу endpoint /search. Там описана реализация поиска некоего контента в базе данных и его возврата в ответе, в случае, наличия.
Но в данный момент захотелось сделать так, чтобы при обращении к /search, сервер,перед выполнением уже реализованного кода, смотрел в еще одной базе данных наличие записи с таким запросом. В случае отсутствия создавал запись, а в случае наличия записи по такому запросу, обновлял эту запись. (Другими словами хочется вести статистику по количеству запросов по каждому значению)

Подскажите пожалуйста, как реализовать данный функционал:

  • через Depends вызывать какую-то функцию, которая будет делать это всё. Но не совсем уверен что можно передать внутрь неё значения получаемые в обработчик endpoint
  • Через Middleware парсить каждый запрос, и в случае обращения к /search делать запись/редактирование в бд
  • Тупо написать всё внутри обработчика эндпоинта /search, прям перед реализацией поиска

Использую FastApi и MongoDB. Может есть какой-то более правильный способ, который общепринят ?
Спасибо!

Структура записи в бд, которая хранит поисковый запрос и пользователей, которые искали его:

{
"request" : "собачки",
"users" : [{"UserID" : "12311", "Searches": 1}],
"firstSearch" : "31.02.2022",
"lastSearch" : "31.02.2222"
}

Ответы

Ответов пока нет.