Skip to content

Latest commit

 

History

History
111 lines (75 loc) · 3.98 KB

File metadata and controls

111 lines (75 loc) · 3.98 KB

User Subscriptions Service

Это приложение предоставляет сервис для управления подписками пользователей. Оно позволяет добавлять, удалять и просматривать подписки пользователей, а также получать статистику о самых популярных сервисах подписок.

Функциональность

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

Технологии

  • Spring Boot — для создания RESTful сервисов и работы с зависимостями.
  • Spring Data JPA — для работы с базой данных.
  • Mockito — для создания юнит-тестов.
  • Docker — для упаковки приложения и его деплоя.

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

1. Клонирование репозитория

Клонируйте репозиторий на локальную машину:

git clone https://github.com/ваш-репозиторий.git

2. Настройка среды

Убедитесь, что у вас установлен JDK 17 или выше и Docker.

3. Запуск приложения с помощью Docker

3.1. Сборка и запуск с помощью Docker Compose

  1. Убедитесь, что у вас есть файл docker-compose.yml и Dockerfile в корне проекта.

  2. Запустите приложение и базу данных с помощью Docker Compose:

docker-compose up --build

Docker Compose автоматически создаст и запустит два контейнера:

  • PostgreSQL: контейнер для базы данных.
  • Приложение: контейнер с вашим Spring Boot приложением.
  1. Приложение будет доступно по адресу http://localhost:8080, а база данных будет доступна на порту 5432.

4. Запуск тестов

Для запуска тестов используйте команду:

mvn test

5. Пример работы с API

  • POST /users — Создание нового пользователя.

    • Тело запроса:

      {
        "username": "string",
        "email": "string",
        "password": "string"
      }
    • Ответ:

      {
        "id": "1",
        "username": "string",
        "email": "string"
      }
  • GET /users/{id} — Получение информации о пользователе.

    • Ответ:

      {
        "id": "1",
        "username": "string",
        "email": "string"
      }
  • POST /users/{userId}/subscriptions — Добавление подписки пользователю.

    • Тело запроса:

      {
        "serviceType": "NETFLIX",
        "startDate": "2025-05-09T10:00:00",
        "expireDate": "2025-06-09T10:00:00"
      }
  • GET /subscriptions/top — Получение статистики о самых популярных подписках.

Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE.