))) фласк, ну они очень похожи с фаст апи, думал вопрос и туда этот кинуть
Нет, это фласк
Просто там все обсуждают архитектуру обычно
да я вижу, но я фигню чето щас пишу на фласке мне это не нрав и поднял вопрос, как это все дело разрулить во фласке
да и твой UrlProfileView(BaseResourceView): … смешал. в себе логику как минимум 3 слоев
можете сказать более точно что именно и куда надо вынести?
работу с репо в сервисы приложения, add в репо, коммит в UoW в фласке UoW проще всего реализовать через pre request и post request методы
Я бы коммит делал все таки в юз кейсе
нет не каких проблем
есть, можно словить то что обьект к которому обращаешься уже его нет
с оговоркой, смотря как юз кейсы реализованы
например сделали db.session.add(object) db.session.commit() потом вы можете обращаетесь к object, а он уже изменный так наверное правильно сказать, я помню как то так раз словил ерор
коммит нужно делать вообще когда работа со всей транзакционной бизнес еденицей завершена, а это может быть далеко не одна модель
так короче делать не нужно
уже точно не помню как писал но словил sqlalchemy.exc.InvalidRequestError: Instance '<UrlProfileItem at 0x7f96717575d0>' has been deleted. Use the make_transient() function to send this object back to the transient state.
похоже на операции над удаленной сущностью до коммита, в любом случае это как раз проблема плохой архитектуры и бизнес логики
что такое сервисы приложения?
ну вот порешал данную проблему перенес с репо во вью коммит
это оркестраторы бизнес логики (предметной), клиент (Фасад) для доменых моделей и сервисов
Обсуждают сегодня