Skip to content

bladsvytro/effective-mobile_test

Repository files navigation

Subscription Service

REST‑сервис для учёта онлайн‑подписок пользователей. Тестовое задание для Effective Mobile (Junior Golang Developer).

GitHub Repository

Запуск

Docker Compose

docker-compose up --build

Сервис будет доступен на http://localhost:8080.

Локально

  1. Установите Go 1.26+ и PostgreSQL.
  2. Создайте БД:
    createdb -h localhost -U postgres subscriptions
  3. При необходимости отредактируйте config.yaml.
  4. Запустите:
    go run ./cmd/api

Эндпоинты

  • POST /api/v1/subscriptions – создать подписку
  • GET /api/v1/subscriptions – список подписок (пагинация)
  • GET /api/v1/subscriptions/:id – получить подписку по ID
  • PUT /api/v1/subscriptions/:id – обновить подписку
  • DELETE /api/v1/subscriptions/:id – удалить подписку (мягкое удаление)
  • GET /api/v1/analytics/total – суммарная стоимость за период

Примечание: Все запросы валидируются с помощью validator.v10. Сервер поддерживает graceful shutdown.

Подробная документация: http://localhost:8080/swagger/index.html

Миграции

Используются версионные SQL‑миграции (папка migrations/). Применяются автоматически при старте.

Логирование

Логи пишутся в stdout в JSON‑формате. Логируются HTTP‑запросы, ошибки, ключевые операции.

Пример запроса

curl -X POST http://localhost:8080/api/v1/subscriptions \
  -H "Content-Type: application/json" \
  -d '{
    "service_name": "Yandex Plus",
    "price": 400,
    "user_id": "60601fee-2bf1-4721-ae6f-7636e79a0cba",
    "start_date": "07-2025"
  }'

Контакты

Владислав Наумов GitHub blads.vytro@gmail.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages