Простой REST-сервис для управления онлайн-подписками пользователей.
- Go 1.21
- Gin (веб-фреймворк)
- GORM (ORM)
- PostgreSQL
- Docker & Docker Compose
- Swagger
POST /api/v1/subscriptions- Создание подпискиGET /api/v1/subscriptions- Получение списка подписокGET /api/v1/subscriptions/:id- Получение подписки по IDPUT /api/v1/subscriptions/:id- Обновление подпискиDELETE /api/v1/subscriptions/:id- Удаление подписки
GET /api/v1/subscriptions/cost- Подсчет суммарной стоимости
- Скопировать конфигурацию:
cp .env.example .env-
Отредактировать
.envпод свои настройки -
Запустить:
docker-compose up -d- Установить PostgreSQL
- Скопировать и настроить переменные окружения:
cp .env.example .env
# Отредактировать .env- Запустить:
go mod tidy
go run cmd/main.gocurl -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"Swagger документация доступна в файле docs/swagger.yaml
Переменные окружения в .env:
DATABASE_URL- строка подключения к PostgreSQLPORT- порт сервера (по умолчанию 8080)# EffectiveMobileSOW