Представьте себе приложение, похожее на Airbnb.Коллекция rentals
содержит документы с полями start
и end
типа отметки времени, в которых записываются дата начала и окончания аренды (только год, месяц и день).В моем приложении Flutter, когда пользователь хочет сделать новый запрос на аренду, мне нужно проверить, не мешает ли этот запрос существующим арендным платам.Было бы слишком много для хранения массива Timestamp
объектов, которые содержат количество дней, а затем используйте arrayContains
для запроса / проверки?
Например:
rental #1
start: Jan 1
end: Jan 2
days: [Jan 1, Jan 2]
rental #2
start: Jan 6
end: Jan 10
days: [Jan 6, Jan 7, Jan 8, Jan 9, Jan 10]
Предположим,Пользователь хочет забронировать аренду на 3-4 января.Я бы запустил цикл и запросил документы с arrayContains: Jan 3
и arrayContains: Jan 4
, и если он вернет какие-либо документы, я знаю, что дата запроса на аренду недействительна.Максимальное количество дней, которое пользователь может арендовать, составляет 27 дней, хотя я ожидаю, что средняя продолжительность аренды будет длиться менее 7 дней.Является ли мой метод жизнеспособным?Я мог бы изменить максимальную продолжительность аренды с 27 до 14, возможно.
Другой метод, который я придумал, это запросить аренду непосредственно до и после желаемого времени получения.Поэтому, используя приведенный выше пример, если желаемая дата аренды - 3-4 января, я бы запросил ближайшую аренду, которая заканчивается до 3 января, и ближайшую аренду, которая начинается после 4 января. Однако проблема, с которой я сталкиваюсь, заключается в том, чтоесли пользователь в прокате № 1 решит продлить аренду с 1-2 января до 1-3 января (до того, как наш пользователь сможет обновить свое приложение)?Или, если конкретный список не имеет истории проката, связанной с ним.