https://github.com/jackoman69/fastapi_handling_queries
FastAPI/SQLAlchemy/Kafka Проект по обработке заявок
https://github.com/jackoman69/fastapi_handling_queries
aiokafka kafka postgresql pytest python sqlalchemy
Last synced: 3 months ago
JSON representation
FastAPI/SQLAlchemy/Kafka Проект по обработке заявок
- Host: GitHub
- URL: https://github.com/jackoman69/fastapi_handling_queries
- Owner: JackOman69
- Created: 2025-01-14T17:37:00.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-01-16T10:04:44.000Z (5 months ago)
- Last Synced: 2025-03-12T09:16:05.761Z (3 months ago)
- Topics: aiokafka, kafka, postgresql, pytest, python, sqlalchemy
- Language: Python
- Homepage:
- Size: 14.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FastAPI Проект для обработки заявок
Надежная система обработки приложений, созданная на основе `FastAPI`, которая обрабатывает и хранит приложения, а также интегрируется с `Kafka` для потоковой передачи событий.
## Технологии
- `FastAPI`
- `SQLAlchemy (Async)`
- `Alembic`
- `Kafka (aiokafka)`
- `PostgreSQL`
- `Docker`
- `Pytest`## Особенности
- Создание новых заявок
- Получение заявок списком
- Фильтрация заявок используя *user_name*
- Асинхронная работа с базой данных через SQLAlchemy
- Потоковая обработка заявок через Kafka
- Логгирование системы в отдельный лог файл
- Базовые unit тесты для покрытия основного функционала## API Endpoints
### Создание заявки
```http
POST /application{
"user_name": "Джон Уик",
"description": "Заявка на покупку денег"
}
``````http
200 OK
{
"id": 1,
"user_name": "Джон Уик",
"description": "Заявка на покупку денег",
"created_at": "2025-01-15T12:39:20.330961+00:00"
}
```### Получение заявок
```http
GET /application?user_name=Джон%20Уик&page=1&size=10
``````http
200 OK
[
{
"id": 1,
"user_name": "Джон Уик",
"description": "Заявка на покупку денег",
"created_at": "2025-01-15T12:39:20.330961+00:00"
}
]
```
## Запуск приложения### Клонируйте репозиторий:
```console
git clone https://github.com/JackOman69/fastapi_handling_queries.git
```### Установка .env:
* Создайте файл `.env` в корневой директории и вложите туда переменные (приведен пример):
```python
PG_HOST=localhost
PG_PORT=5432
PG_USER=postgres
PG_PASSWORD=postgres
PG_DB=applications_db
KAFKA_BOOTSTRAP_SERVERS = "kafka:9092"
KAFKA_TOPIC = "applications"
```### Запуск через Docker:
* Запускать проект нужно с помощью следующих команд:
```console
docker-compose up -d
```### Инициализация топика Kafka:
* Для создания топика Kafka выполните следующую команду:
```console
docker exec -it fastapi_handling_queries-kafka-1 echo "/usr/bin/kafka-topics --create --partitions 1 --replication-factor 1 --topic applications --bootstrap-server localhost:9092"
```* С помощью данной команды выполнится создание топика Kafka с именем "applications" внутри докер контейнера.
### Запуск тестов:
* Для запуска тестов нужно зайти внутрь контейнера `fastapi_backend-1` и выполнить команду:
```console
pytest src/unit_tests/crud_operations_tests.py -v
```### Проверка данных внутри топика Kafka:
* Для проверки данных внутри топика Kafka можно использовать следующую команду:
```console
/usr/bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic applications --from-beginning
```