Hasura graphql запрос между датами - PullRequest
1 голос
/ 21 марта 2020

В моей базе данных hasura.io у меня есть таблица booking, в которой я храню бронирования со следующими свойствами:

  • id (автоинкремент)
  • из (timestamptz)
  • до (timestamptz)
  • описание (текст)

Теперь, из пользовательского интерфейса, когда пользователь делает бронирование, я хотел бы проверить, есть ли любые заказы, сделанные ранее, которые касаются диапазона этих дат.

например. Пользователь хочет сделать бронирование со следующими датами:

{
  "from": "2020-03-31T14:00:00+00:00",
  "to": "2020-03-31T17:00:00+00:00"
}

Но в тот же день есть бронирование:

{
  "from": "2020-03-31T15:00:00+00:00",
  "to": "2020-04-01T17:00:00+00:00"
}

Обратите внимание, что это бронирование было сделано не в диапазоне дат, которые пользователь пытается забронировать. Поэтому следующий запрос ничего не даст.

query CheckBooking($from: timestamptz!, $to: timestamptz!) {
  booking(where: {_and: [{from: {_lte: $from}}, {to: {_gte: $to}}]}) {
    id
    from
    to
  }
}

Это то, что я пробовал без успеха. Может ли кто-нибудь помочь выяснить, какой правильный запрос к проверить, есть ли какие-либо бронирования в диапазоне или в пределах нового бронирования пользователей?

1 Ответ

1 голос
/ 21 марта 2020

Мы хотим рассмотреть как from, так и to по отдельности и применить диапазон к обоим. Таким образом, вы можете сделать что-то вроде:

query CheckBooking($from: timestamptz!, $to: timestamptz!) {
  booking(where: {_or: [
    {_and: [{from: {_gte: $from}}, {from: {_lt: $to}}]},
    {_and: [{to: {_gt: $from}}, {to: {_lte: $to}}]},
  ]}) {
    id
    from
    to
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...