Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BILLING-MVP API

Архитектура

Очень упрощенная Clean Architecture. Проект небольшой и я решил сильно не заморачиваться. Entitiesmodels, Usecasesservice, Controllers/Presentersapi, Repositoriesdb. Показалось, что интерфейсы только добавят путаницы, и отказался от них.

Индексы MongoDB

Файл с созданием индексов.
Их всего два: текстовый, для уникальных значений report_id, и второй, для ускорения работы с user_id в POST /api/user/link-anonymous и GET /api/user/reports.

Запуск проекта

Перед запуском нужно только настроить .env.

DB_USER=admin
DB_PASS=admin
DB_NAME=billing
POSTGRES_HOST=localhost:5432
MONGO_HOST=localhost:27017
SECRET_KEY=secret-key

Переменные DB_* общие для PostgreSQL и MongoDB (сделано для удобства). POSTGRES_HOST и MONGO_HOST нужны, если запускать апи отдельно от docker-compose.yml и на запуск через docker-compose up не влияют. SECRET_KEY ключ для JWT токенов.
После настройки окружения, просто запуск:

docker compose up -d

CURL

POST /api/auth/register

curl -X POST http://localhost:8080/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "login": "testuser",
    "password": "testpass"
  }'

POST /api/auth/login

curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "login": "testuser",
    "password": "testpass"
  }'

POST /api/mock/create-report

curl -X POST http://localhost:8080/api/mock/create-report \
  -H "Content-Type: application/json" \
  -d '{
    "client_generated_id": "abc123"
  }'

POST /api/user/link-anonymous

curl -X POST http://localhost:8080/api/user/link-anonymous \
  -H "Content-Type: application/json" \
  -H "Authorization: {{ACCESS_TOKEN}}" \
  -d '{
    "client_generated_id": "abc123"
  }'

GET /api/user/reports

a bit of bad practice

curl -X GET http://localhost:8080/api/user/reports \
  -H "Content-Type: application/json" \
  -H "Authorization: {{ACCESS_TOKEN}}" \
  -d '{
    "limit": 10,
    "offset": 0
  }'

POST /api/reports/{id}/purchase

curl -X POST http://localhost:8080/api/reports/{{report_id}}/purchase \
  -H "Content-Type: application/json" \
  -H "Authorization: {{ACCESS_TOKEN}}" \
  -d '{
    "price": 100
  }'

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages