2025-03-14 17:30:14 +10:00

54 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- так как информации о связи постов комментариев не было - я создал таблицу Comment
- было упоминание "написать комментарий" в таблице логов, которую можно было дополнить столбцом, ведущим к постту, но мне кажется это не очень хорошим решением - сначала разделять на 2 БД, а потом пытаться связать данные внутри них
## мои сомнения
я недопонял смыслого посыла датасета comments, поэтому тот датасет - это количество комментариев одного пользователя под пост другого с деталями