Всем привет!
На официальном ютуб канале есть серия обучающих роликов по созданию приложения авиато, на 6-м уроке она обрывается, я так понимаю из-за важных обновлений платформы, чтобы не запутать в процессе.
Сам вопрос вытекает сам собой, как в дальнейшем выстроить логику, если у кого-то уже готовый учебный проект авиато, какие страницы и блоки нужны в веб-приложении и триггеры к ним и базово как выстроить бизнес логику в триггерах на фронте?
Вопрос слишком общий, чтобы можно было как-то ответить в рамках одного топика.
В целом по созданию веб-приложений рекомендую обратиться в раздел University на официальном сайте AppMaster. Там есть как отдельные обучающие статьи по конкретным темам, так и собственный курс, рассматривающий разработку приложения в комплексе.
Да, вопрос общий, постараюсь конкретизировать. На скрине завёрстана гланая страница. По модулю обучения на ютуб, было создано два бизнес процесса - валидация и создание полёта и регистрация пассажира, также два пост-эндпойнта к ним.
Далее, как лучше выстроить логику на фронте? По клику по кнопке “найти билеты” перенаправить на страницу созданого пост-эндпойнта? А внутри этой страницы выводить блок с конкретно существующим рейсом исходя из вписанных водных данных инпут полей “from, to”?
Звучит так, будто нужно, как минимум, еще эндпойнт создать предварительно. И вероятно не один.
Пример данного приложения - он в целом не про поиск авиабилетов.
А эндпойнты сами по себе никак не связаны со страницами. Это возможность отправить какой-то запрос и получить результат.
Получается для поиска нужно создать бизнес процесс, который будет доставать из базы существующие рейсы по заданным направлениям. Для этого БП нужно создать эндпойнт.
Далее, по нажатию на “найти билеты” нужно создать процесс на фронте, который будет брать данные с полей ввода, отправлять их в эндпойнт поиска, получать массив результата, список доступных рейсов.
Этот массив, без какого-то перехода на другую страницу, нужно передать в List результата поиска, который видимо уже находится на экране (список с add your content на скрине). Главное убедится, что модели в List и в ответе эндпойнта совпадают.
В самом List нужно также настроить БП onCreate для каждого элемента, чтобы указать какие именно данные нужно отображать. То есть, например, в List будут добавлены два текстовых поля. Нужно чтобы при появлении данных они отобразили информацию из модели, в одном откуда рейс, в другом куда.
Спасибо большое, что-то уже нарисовывается, начинаю потихоньку разбираться.
Я вписал данные в таблицу, где выставил все нужные значения для каждого рейса (цифры заданы для enum полей формата bigint).
Создал по твоей рекомендации бизнес процесс, в котором связал enum переменые с поисковым функционалом, далее был создан гет-эндпойнт под данный бизнес процесс.
По логике на фронте, оставил два enum селекта направлений (from, in) и построил бизнес процесс по тригеру onClick для кнопки “найти билеты”, внутри связал мои элементы с гет запросом и дальнейшим обновлением данных в листе.
А в самом листе (БП onCreate) раздерабанил БД для обновления значений текстовых элементов внутри самого листа.
Но что-то было упущено, данные в текстовых блоках внутри листа не обновляются по триггеру… не могу разобраться пока где-именно, постараюсь найти причину.
Внутри листа у каждого элемента есть дополнительный индекс. Порядковый номер, начиная с нуля.
Поэтому для действия типа Update Data внутри листа нельзя просто выбрать Element Key из списка - он фактически указывает на группу элементов, а не на конкретный элемент внутри листа.
Нужно либо взять Element Key из начального блока триггера (On Create).
Либо сформировать его вручную, например, блоком Concat string, приведя к виду ElementKey:Index.
Index также можно взять из первого блока триггера.
А в самом бизнес процессе DB Search Flight (третий скрин), как выстроить параметры, чтобы по гет-запросу по выбраным селектам (from, in) мы в теле получили нужный рейс, сейчас в свагере выводится пустое тело по данному запросу?
или в целом тут лучше найти другой подход
Можно пример со скриншотом запроса в сваггере, и заодно из базы, с ожидаемыми данными по этому запросу?
В целом запрос максимально простой, должно отрабатывать нормально, возможно проблема в чем-то другом.
Например, меня смущает то, что на представленном скрине базы у всех рейсов пункты вылета и назначения совпадают.
На вид все правильно и должно работать, но на глаз трудно сказать достоверно.
Выдается ли результат, если не указывать to и from?
Не менялось ли содержимое базы или БП, в сравнении с предыдущими скринами?