51 lines
3.7 KiB
Markdown
Raw Normal View History

2025-03-13 17:54:38 +10:00
# python_dev
# Запуск
```cp .env.example .env```
2025-03-13 17:54:38 +10:00
```docker compose up -d```
# миграции БД
```cp .env.example .env```
2025-03-13 17:54:38 +10:00
```cd alembic/db1 && alembic revision --autogenerate && alembic upgrade head```
```cd alembic/db2 && alembic revision --autogenerate && alembic upgrade head```
# режим разработки
```cp .env.example .env```
```rye sync```
```granian src/app.py --reload```
# структура проекта
📦python_dev_farpost
┣ 📂alembic
┃ ┣ 📂db1 - вспомогательные инструменты alembic для миграций первой БД
┃ ┗ 📂db2 - вспомогательные инструменты alembic для миграций второй БД
┣ 📂database
┃ ┣ 📂dumps - дампы БД
┃ ┗ 📜....sh - скрипт, для автоматизации создания и импорта дампов в multiDB
┣ 📂src
┃ ┣ 📂adapters
┃ ┃ ┗ 📂database - модели sqlAlchemy и инструменты для подключения к БД
┃ ┣ 📂api - эндпоинты fastapi + формирование датасета (не делил ввиду отстутствия необходимости)
┃ ┣ 📂schemas - схемы для обработки входных и выходных данных (в тч валидации данных для БД)
┃ ┣ 📜app.py - приложение для запуска
┃ ┣ 📜settings.py - валидация настроек из .env, которые в дальнейшем удобно брать
┣ 📜.env.example -
┣ 📜.gitignore
┣ 📜compose.yaml
┣ 📜Dockerfile
┣ 📜Makefile
┣ 📜pyproject.toml - данные проекта для запуска rye
┣ 📜README.md
┣ 📜requirements-dev.lock
┗ 📜requirements.lock
2025-03-13 17:54:38 +10:00
# что не по ТЗ
- мне не очень понравилось, что space_type и event_type сделаны через отдельные таблицы
- потому что работать с этой таблицей будет бэкенд, и у нас есть различные API хэндлеры, которым, чтобы создать запись в БД нужно
сходить на дочерние таблицы, найти нужный тип (например event_type - login), взять от него id, прийти назад и создать запись с нужным id, при этом это ещё будет не надёжным (кто-то удалит тип, поменяет название, всё поляжет) + а зачем нам отдельная таблица? (я в том смысле, что над этими типа у нас есть все операции круд, но без изменения кода бэкенда - это либо бесполезно, либо опасно)
- я заменил на более удобные Enum
- (не знаю успею ли я закончить формирование датасета comments после ответа на вопрос)
- в ТЗ было сказано, что мне нужно сделать датасет в котором должна быть информация о том, кто кому какой коммент оставил, хотя упоминание комментов было только в логах. Если бы мне такое попалось как реальное задание, то я бы пошёл к аналитикам, и стал настаивать на создании отдельной таблицы комментариев, где было бы указано - от кого, на какой пост, текст комментария