0: Давайте немножко отойдём от темы базы данных и вернёмся к пайдентику. Сделаем схему, чтобы как-то уже доработать этот эндпоинт, чтобы он выглядел прилично и считался ну почти почти завершённым. Давайте воспользуемся респонс модул.
1: И сделаем схему для Букинга. Давайте скопируем вот все эти столбцы.
2: Через зажатый альт скопировали и создадим отдельный файл для схем. Назовём его схемас точка пай. Здесь будут схемы, их может быть несколько. И здесь мы из пайдентик в 1 очередь импортируем бейз модул от которой
3: Мы наследуемся для создания схем и создаём схему с 1 префиксом буквой с. Чтобы всегда понимать, что это схема, назовём с букинг, наследуемся от base модели и здесь вставляем вот эти.
4: Эти все параметры.
5: Давайте везде здесь нажмём двоеточие пробел и integer, потому что у нас большинство здесь это integer. Единственное, поправим, что, date from date, to это у нас дейт и date, мы импортируем из date time price, у нас тоже целое число total.
6: Ghost у нас тоже целое число, так как price, целое число и total days целое число. Собственно все. Причём все эти параметры обязательные. Не может быть такого, что что-то из этого отсутствует да то есть здесь нам не нужно прописывать опшинал и так далее. Мы
7: Схему. Теперь давайте здесь, в роутере, укажем, что возвращается вот такая схема, и импортируем её, конечно же, причём, если мы используем, например, find all давайте
8: В дао перейдём файнд ол, здесь возвращается список объектов. Да, давайте попробуем сделать так просто. Верни нам, пожалуйста. Все.
9: Без каких-либо фильтров и тогда у нас будет уже список и можно передать просто лист от этих схем. Давайте посмотрим, сохраним, посмотрим на
10: Нашу документацию на всякий случай обновим страницу, и, как я и говорил раньше, у нас показывается здесь схема, что вернут, что вернёт этот эндпоинт. То есть его можно не запускать. Представьте, что он запускается и работает там 10, 20 секунд. А вам
11: Нужно быстренько оценить, что он возвращает, чтобы с ним можно было работать с этими данными. Вам не нужно запускать. Вы сразу видите здесь, что прилетает нажмём Трайт аут экзекьют и у нас ошибка. Ошибка, скорее всего.
12: Валидации данных давайте посмотрим 2 ошибки валидации не может пайдентик распознать, что нам возвращает sql алхимия и тут немножко
13: Нужно сделать отступление про пайдентик, значит у нас схемы, когда пайдентик пытается распознать какую-то, конвертировать модель в json, конвертировать модель в свою какую-то структуру пайдентиком, он пробует из неё достать.
14: Например, вот этот самый там id или room id и приписать ему как бы условно вот что-то такое подобное, такой атрибут. Но у нас с моделями алхимии можно работать через точку только ой.
15: Простите, вот, вот так вот. То есть вот так можно вызывать. Если мы бы работали, пытались бы из резалта достать вот там точка айди, то так можно делать. Нам нужно по айдентику показать.
16: Что смотри, друг, можно обращаться к нашей модели как к классу у класса. Через точку можно вызывать его атрибуты, поэтому здесь мы пропишем дополнительный конфиг. Вот это мы удалим.
17: Конфиг класс конфиг прямо внутри схемы и указать орм мот равно true то есть, пожалуйста, смотри не только на нашу модель как на словарик, к которой можно обращаться через квадратные скобки, но и как к какому-то ка.
18: У которого есть атрибуты. Тогда давайте сохраним это дело и посмотрим, как у нас вновь отработает наш эндпоинт. Нажимаем экзекьют, и в этот раз у нас ошибки никакой нет. Пайдентик попытался сначала получить
19: По квадратным скобкам там если не получилось окей, давай через точку, попробуй через точку получилось и вот он смог провалидировать все данные да, если бы мы указали, например, здесь вместо date from интеджер.
20: Или ещё допустили какую-нибудь другую ошибку понятно, что валидация бы не прошла, если бы мы, например, убрали здесь user id или или даже не так. Если бы мы в base вот здесь, в base дао, вернули бы не все столбцы, а, например, только.
21: Часть, тогда бы была ошибка валидации, в данном случае её нету, потому что мы явно модель и схему сделали, ну, практически идентичными. Давайте ещё раз посмотрим на них. У нас есть схема и есть
22: Модель и в ней одинаковые столбцы все просто 1 в 1 указаны, все перечислены и здесь у особо внимательных и любопытных может возникнуть вопрос разве мы не нарушаем здесь принцип dry, разве мы не повторяем наш?
23: Код дважды, да и тут указан вроде тип int, и тут вроде указан тип integer и имена одинаковые и действительно об этом уже задумывались есть библиотека, которая позволяет объединить пайдентик и sq алхимию.
24: Она называется sql модел, её создатель это создатель библиотеки фастапи, который мы с вами изучаем, но мы не будем ей пользоваться, так как все-таки схемы мы будем создавать не только в точности повторяющие возвраща.
25: Результат, но и другие. Поэтому мы не сможем прям супер насладиться этой библиотекой, мы её опустим, но для вашего расширения кругозора вы должны понимать, что такое решение есть, и можете посмотреть, почитать, как оно работает.
26: На этом мы решили 2 задачу. Мы решили задачу с валидацией данных. Да, здесь мы не принимаем никакие данные, поэтому пускай остановимся пока на том, что мы решили проблему с валидацией данных, которые мы отправляем, и у нас остаётся проблема.
27: Как вернуть букинги, как вернуть бронирование для конкретного пользователя, который делает запрос? Как распознать, что пользователь, например, Вася, или Фёдор, или шарик?