Skip to content

hololotl/EffectiveMobileTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API‑сервер для управления подписками

Проект реализует RESTful API на Go для создания, чтения, обновления, удаления и листинга записей о подписках.


📋 Требования

  1. CRUDL-операции над записями о подписках:

    • service_name — название сервиса (строка)
    • price — стоимость месячной подписки в рублях (целое число)
    • user_id — UUID пользователя
    • start_date — дата начала подписки (формат MM-YYYY)
    • end_dateопционально дата окончания подписки (формат MM-YYYY)
  2. Эндпоинт для подсчёта суммарной стоимости подписок за период с фильтрацией по user_id и service_name.

  3. СУБД — PostgreSQL с миграциями для инициализации схемы.

  4. Логирование действий и ошибок.

  5. Конфигурация через файл .env или config.yaml.

  6. Swagger-документация для всех API-методов.

  7. Запуск сервиса с помощью Docker Compose.

Примечание: проверка существования пользователя выполняется вне зоны ответственности сервиса; копейки не учитываются.


🚀 Установка и запуск

  1. Клонировать репозиторий:

    git clone https://github.com/hololotl/EffectiveMobileTest.git
  2. Отредактировать параметры подключения к БД и другие настройки в .env.

🐳 Запуск через Docker Compose

docker-compose up --build

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


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

.env

# Параметры приложения
HOST=0.0.0.0
PORT=8080
POSTGRES_USER=postgres
POSTGRES_PASSWORD=2005
POSTGRES_DB=postgres
POSTGRES_HOST=db
POSTGRES_PORT=5432

📑 API Endpoints

CRUDL для подписок

Метод Путь Описание
GET /swagger/ Swagger UI
POST /add-sub Создать новую подписку
GET /get-subs Список всех подписок
GET /get-subId Получить подписку по id
PUT /edit-sub Обновить подписку
DELETE /delete-sub Удалить подписку

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

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

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

📄 Swagger-документация

После запуска доступна по адресу: http://localhost:8080/swagger/index.html


🛠️ Логирование

Используется библиотека slog


Автор

telegram: https://t.me/NetOtveto mail: niyaz_2005l@mail.ru

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors