Продолжаем изучать ORM SQLAlchemy, начало было тут:
На данный момент у нас есть модель worker и модель resume и нашей платформе явно не хватает модели с вакансиями, создадим её:
Теперь нам нужно связать модель резюме с моделью вакансий. Связь многие ко многим реализуется через дополнительную таблицу, для этого создадим еще один класс который и будет связывать классы вакансий и резюме, и назовем его что-то типа "ответы на резюме" (VacanciesRepliesORM):
После создания связующего класса, можно указать relationship в классе VacanciesORM:
И в классе резюме так же прописать связь relationship с вакансиями:
Ну вот осталось создать запрос с какой-нибудь вакансией и чтобы на эту вакансию откликнулись (пусть будет 2) резюме, сразу пропишем в main.py вызов этой функции:
Да, вызов запуска сервера я пока приостановил:
Всё отработалось, создались дополнительные таблицы и наполнились данными, посмотрим как это выглядит в DBEaver:
Теперь получим эти данные, преобразуем в DTO (см. предыдущую статью), конвертируем в JSON формат и пусть эти данные выдает веб-сервер.
Получаем данные и преобразуем в DTO (Data transfer object (объект передачи данных)):
Создадим классы для преобразование к DTO:
Добавим еще одну конечную точку, с вакансиями и разблокируем запуск веб-сервера:
Теперь можно пройти по адресу http://127.0.0.1:8000/vacancies можно увидеть полученные данные, правда не в таком красивом виде как в предыдущей статье, ибо сейчас я не стал заморачиваться с созданием второго веб-сервера, в качестве клиента. Можно посмотреть в браузере, причем хром-подобный браузер выдает в текстовом виде данные:
А FireFox упорядочивает в структуру, и можно удобно читать полученные данные:
Либо можно вообще в консоли сделать запрос и получить ответ: