Проект "Şañıraq.kz" стремится стать лидером на рынке недвижимости, обеспечивая пользователям простой и удобный доступ к объявлениям.
Мы видим необходимость в усовершенствовании функционала нашего сервиса для обеспечения большей гибкости и эффективности при поиске объявлений.
На данном этапе разработки мы сосредоточимся на трех ключевых функциях:
- Разработка списка объявлений: пользователи смогут легко просматривать все доступные предложения.
- Поиск и фильтрация объявлений: будут созданы инструменты для быстрого нахождения нужных объявлений.
- Поиск ближайшей недвижимости по координатам: добавим возможность найти жилье рядом с указанной локацией.
После завершения данного спринта разверните разработку на railway.
Нужно реализовать поиск и пагинацию по объявлениям. Реализуйте роут, который поддерживает следующие параметры запроса (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
}
}
]
}
К роуту из предыдущего задания добавьте следующие параметры запроса:
Параметр | Описание |
---|---|
latitude | Широта |
longitude | Долгота |
radius | Радиус поиска |
Указываются координаты (широта, долгота) и радиус поиска. Вернуть объявления находящиеся в радиусе точки поиска.
Если в параметре поиска присутствуют не все параметры поиска по локации, то вернуть ошибку. Каждый параметр поиска по локации обязателен, если один из них присутсвует.
Учитывать другие параметры поиска, т.е. если указан диапозон цен, тип объявления и координаты, то вернуть объявления удовлетворящие данному фильтру.