Skip to content

Repository files navigation

Тестовое задание Junior Golang Developer — Effective Mobile

Задача

Спроектировать и реализовать REST‑сервис для агрегации данных об онлайн‑подписках пользователей.

Требования

  1. Выставить HTTP‑ручки для CRUDL‑операций над записями о подписках. Каждая запись содержит:
    • Название сервиса, предоставляющего подписку.
    • Стоимость месячной подписки в рублях.
    • ID пользователя в формате UUID.
    • Дата начала подписки (месяц и год).
    • Опционально дата окончания подписки.
  2. Выставить HTTP‑ручку для подсчёта суммарной стоимости всех подписок за выбранный период с фильтрацией по ID пользователя и названию подписки.
  3. СУБД — PostgreSQL. Должны быть миграции для инициализации базы данных.
  4. Покрыть код логами.
  5. Вынести конфигурационные данные в .env/.yaml‑файл.
  6. Предоставить Swagger‑документацию к реализованному API.
  7. Запуск сервиса с помощью docker compose.

Примечания

  • Проверка существования пользователя не требуется. Управление пользователями вне зоны ответственности вашего сервиса.
  • Стоимость любой подписки — целое число рублей, копейки не учитываются.

Пример тела запроса на создание записи о подписке

{
  "service_name": "Yandex Plus",
  "price": 400,
  "user_id": "60601fee-2bf1-4721-ae6f-7636e79a0cba",
  "start_date": "07-2025"
}

Запуск

  • С Docker Compose:

    1. Скопируйте файл с паролями: cp docker.env.example docker.env
    2. Отредактируйте docker.env и установите безопасные пароли
    3. Соберите и запустите сервисы:
      docker compose up --build
    4. Миграции применяются контейнером migrate из папки schema (up/down SQL).
    5. Swagger: http://localhost:8000/swagger (либо используйте любой Swagger Viewer). API — /api/v1.
  • Локально:

    1. Настройте переменную окружения APP_DATABASE_URL (или DATABASE_URL). Пример: postgres://app:app@localhost:5432/subscriptions?sslmode=disable.
    2. Примените миграции из папки schema (*.up.sql/*.down.sql) любым инструментом (например, migrate).
    3. Запустите сервер:
      go run ./cmd/subscriptionservice

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages