REST-сервис на Go для управления и агрегации данных об онлайн-подписках пользователей.
git clone https://github.com/DoktorAssering/Subscription-Service.git
cd Subscription-ServiceСкопируйте файл примера и заполните переменные:
cp .env.example .env
# или создайте вручную .env с содержимым:
# DB_HOST=localhost
# DB_PORT=5432
# DB_USER=postgres
# DB_PASSWORD=postgres
# DB_NAME=subscriptionsdocker compose up -dПроверьте, что контейнер PostgreSQL запущен и слушает порт 5432 (Либо любой другой указанный в .env + docker-compose.yml).
# Скачиваем модули Go
go mod tidy
# Генерируем документацию Swagger (точка входа в cmd/main.go)
swag init -g cmd/main.go# Запуск прямо через Go
go run ./cmd/main.goСервис будет доступен на http://localhost:8080.
subscription-service/
├── cmd/
│ └── main.go # Точка входа
├── config/
│ └── config.go # Настройка БД и окружения
├── handler/
│ └── subscription.go # HTTP-ручки
├── model/
│ └── subscription.go # Модель данных
├── repository/
│ └── subscription.go # Работа с БД
├── service/
│ └── subscription.go # Бизнес-логика
├── docs/ # Сгенерированные Swagger-файлы
├── Dockerfile # Сборка Go-приложения
├── docker-compose.yml # Подъём БД
├── .env.example # Пример файла окружения
├── go.mod
└── README.md
| Метод | Путь | Описание |
|---|---|---|
| POST | /subscriptions |
Создать подписку |
| GET | /subscriptions |
Получить список подписок |
| GET | /subscriptions/{id} |
Получить подписку по ID |
| PUT | /subscriptions/{id} |
Обновить подписку |
| DELETE | /subscriptions/{id} |
Удалить подписку |
| GET | /subscriptions/total |
Суммарная стоимость по фильтрам |
{
"service_name": "Netflix",
"price": 12.99,
"user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"start_date": "2025-07-22"
}GET /subscriptions/total?service=Netflix&userId=3fa85f64-5717-4562-b3fc-2c963f66afa6
Ответ:
{ "total_price": 12.99 }-
Swagger UI: http://localhost:8080/swagger/index.html
-
curl:
curl -X POST http://localhost:8080/subscriptions \ -H "Content-Type: application/json" \ -d '{ "service_name":"Netflix","price":12.99,"user_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","start_date":"2025-07-22" }'
-
Postman: импортируйте коллекцию из папки
postman/Subscription API.json(если есть).
- После изменения модели перезапускайте приложение для авто-миграции (
db.AutoMigrate). - Проверяйте переменные окружения и совпадение портов
DB_HOST/DB_PORT. - В случае ошибок модулей Go — запускайте
go clean -modcache && go mod tidy.