2025-03-14 03:57:55 +10:00
2025-03-13 22:47:31 +10:00
2025-03-13 22:47:31 +10:00
2025-03-14 03:57:55 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00
2025-03-13 17:54:38 +10:00

python_dev

Запуск

cp .env.example .env docker compose up -d

миграции БД

cp .env.example .env 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

что не по ТЗ

  • мне не очень понравилось, что space_type и event_type сделаны через отдельные таблицы

    • потому что работать с этой таблицей будет бэкенд, и у нас есть различные API хэндлеры, которым, чтобы создать запись в БД нужно сходить на дочерние таблицы, найти нужный тип (например event_type - login), взять от него id, прийти назад и создать запись с нужным id, при этом это ещё будет не надёжным (кто-то удалит тип, поменяет название, всё поляжет) + а зачем нам отдельная таблица? (я в том смысле, что над этими типа у нас есть все операции круд, но без изменения кода бэкенда - это либо бесполезно, либо опасно)
    • я заменил на более удобные Enum
  • (не знаю успею ли я закончить формирование датасета comments после ответа на вопрос)

    • в ТЗ было сказано, что мне нужно сделать датасет в котором должна быть информация о том, кто кому какой коммент оставил, хотя упоминание комментов было только в логах. Если бы мне такое попалось как реальное задание, то я бы пошёл к аналитикам, и стал настаивать на создании отдельной таблицы комментариев, где было бы указано - от кого, на какой пост, текст комментария
Description
No description provided
Readme 85 KiB
Languages
Python 84.8%
Mako 7.1%
Shell 4.2%
Makefile 2.3%
Dockerfile 1.6%