Skip to content

Latest commit

 

History

History
 
 

SPRINT-4

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Спринт №4: Поиск и пагинация

image

Проект "Şañıraq.kz" стремится стать лидером на рынке недвижимости, обеспечивая пользователям простой и удобный доступ к объявлениям.

Мы видим необходимость в усовершенствовании функционала нашего сервиса для обеспечения большей гибкости и эффективности при поиске объявлений.

На данном этапе разработки мы сосредоточимся на трех ключевых функциях:

  • Разработка списка объявлений: пользователи смогут легко просматривать все доступные предложения.
  • Поиск и фильтрация объявлений: будут созданы инструменты для быстрого нахождения нужных объявлений.
  • Поиск ближайшей недвижимости по координатам: добавим возможность найти жилье рядом с указанной локацией.

После завершения данного спринта разверните разработку на railway.

✅ Таск №1: Поиск и пагинация

Нужно реализовать поиск и пагинацию по объявлениям. Реализуйте роут, который поддерживает следующие параметры запроса (query paramters):

Параметр Описание
limit Кол-во записей для отображения на странице
offset Точка начала отображения в наборе данных
type Тип объявления - продажа (sell) или аренда (rent)
rooms_count Кол-во комнат
price_from Стоимость от
price_until Стоимость до

Каждый параметр, кроме limit и offset, опциональный. Если не указывать никакого параметра поиска, то роут должен вернуть все объявления.

Объявления должны быть отсортированы по убыванию даты создания.

Для каждого объявления вернуть следующий список полей:

  • id
  • type
  • price
  • address
  • area
  • rooms_count
  • location

В ответе должно присутсвовать поле total, который указывает сколько всего объявлений по данному фильтру.

GET /shanyraks?limit=2&offset=0&rooms_count=2 HTTP/1.1
HTTP/1.1 200 OK

{
    "total": 119,
    "objects": [
        {
           "_id": "507f191e810c19729de860ea",
            "type": "rent",
            "price": 150000,
            "address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь",
            "area": 46.5,
            "rooms_count": 2,
            "location": {
                "latitude": 43.23624,
                "longitude": 76.929851
            }
        },
        {
           "_id": "{shanyrak_id2}",
            "type": "sell",
            "price": 30000000,
            "address": "{address}",
            "area": 86.0,
            "rooms_count": 2,
            "location": {
                "latitude": 43.242715,
                "longitude": 76.926397
            }
        }
    ]
}

✅ Таск №2: Поиск по локации

К роуту из предыдущего задания добавьте следующие параметры запроса:

Параметр Описание
latitude Широта
longitude Долгота
radius Радиус поиска

Указываются координаты (широта, долгота) и радиус поиска. Вернуть объявления находящиеся в радиусе точки поиска.

Если в параметре поиска присутствуют не все параметры поиска по локации, то вернуть ошибку. Каждый параметр поиска по локации обязателен, если один из них присутсвует.

Учитывать другие параметры поиска, т.е. если указан диапозон цен, тип объявления и координаты, то вернуть объявления удовлетворящие данному фильтру.