Skip to content

rTexty/EffectiveMobileSOW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Subscription Service

Простой REST-сервис для управления онлайн-подписками пользователей.

Технологии

  • Go 1.21
  • Gin (веб-фреймворк)
  • GORM (ORM)
  • PostgreSQL
  • Docker & Docker Compose
  • Swagger

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/subscriptions/cost - Подсчет суммарной стоимости

Запуск

Docker Compose (рекомендуется)

  1. Скопировать конфигурацию:
cp .env.example .env
  1. Отредактировать .env под свои настройки

  2. Запустить:

docker-compose up -d

Локально

  1. Установить PostgreSQL
  2. Скопировать и настроить переменные окружения:
cp .env.example .env
# Отредактировать .env
  1. Запустить:
go mod tidy
go run cmd/main.go

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

Создание подписки

curl -X POST http://localhost:8080/api/v1/subscriptions \
  -H "Content-Type: application/json" \
  -d '{
    "service_name": "Yandex Plus",
    "price": 400,
    "user_id": "1",
    "start_date": "07-2025"
  }'

Получение списка подписок

curl "http://localhost:8080/api/v1/subscriptions?user_id=60601fee-2bf1-4721-ae6f-7636e79a0cba&limit=10&offset=0"

Расчет стоимости

curl "http://localhost:8080/api/v1/subscriptions/cost?user_id=60601fee-2bf1-4721-ae6f-7636e79a0cba&start_date=07-2025&end_date=12-2025"

Документация API

Swagger документация доступна в файле docs/swagger.yaml

Конфигурация

Переменные окружения в .env:

  • DATABASE_URL - строка подключения к PostgreSQL
  • PORT - порт сервера (по умолчанию 8080)# EffectiveMobileSOW

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published