Как сделать «по-уму» обработку рэквеста сервисом поиска? есть обьект репозиторий с методами - searchProducts - searchStores - getNearestShops и т д в случае если есть ключ-значение - все просто?name=abc&city=London но нужна дополнительная логика которая будет определять как именно обрабатывать значение входного параметра[{"key":"name","value":"London","type":"searchByLike"}, {"key":"price","value":"100","type":"greaterThan" } ] надо это как-то правильно в плане ООП спроектировать чтоб реюзать Спасибо
Для реализации данного функционала вам нужно создать класс, который будет обрабатывать входные параметры запроса. Давайте назовем его RequestProcessor.
У этого класса должны быть методы для обработки различных типов фильтров, например searchByLike, greaterThan и другие. Каждый метод будет принимать значение параметра и выполнять соответствующую логику.
Примерно так может выглядеть код:
class RequestProcessor: def searchByLike(self, value): # Реализация логики поиска по частичному совпадению pass def greaterThan(self, value): # Реализация логики поиска значений больше указанного pass def processRequest(self, filters): for filter in filters: key = filter["key"] value = filter["value"] filter_type = filter["type"] if hasattr(self, filter_type): getattr(self, filter_type)(value) else: # Обработка неизвестного типа фильтра pass
Теперь вы можете использовать объект класса RequestProcessor для обработки входных параметров запроса. Вызовите метод processRequest, передав в него список фильтров, и каждый фильтр будет обработан соответствующим методом.
Надеюсь, это поможет вам правильно спроектировать решение и повторно использовать его при необходимости.
Для реализации данного функционала вам нужно создать класс, который будет обрабатывать входные параметры запроса. Давайте назовем его RequestProcessor.
У этого класса должны быть методы для обработки различных типов фильтров, например searchByLike, greaterThan и другие. Каждый метод будет принимать значение параметра и выполнять соответствующую логику.
Примерно так может выглядеть код:
class RequestProcessor:def searchByLike(self, value):
# Реализация логики поиска по частичному совпадению
pass
def greaterThan(self, value):
# Реализация логики поиска значений больше указанного
pass
def processRequest(self, filters):
for filter in filters:
key = filter["key"]
value = filter["value"]
filter_type = filter["type"]
if hasattr(self, filter_type):
getattr(self, filter_type)(value)
else:
# Обработка неизвестного типа фильтра
pass
Теперь вы можете использовать объект класса RequestProcessor для обработки входных параметров запроса. Вызовите метод processRequest, передав в него список фильтров, и каждый фильтр будет обработан соответствующим методом.
Надеюсь, это поможет вам правильно спроектировать решение и повторно использовать его при необходимости.