Skip to content

Repository files navigation

Онлайн библиотека песен

Функционал

  • Получение данных библиотеки с фильтрацией по всем полям, сортировкой и пагинацией.
  • Получение текста песни с пагинацией по куплетам.
  • Удаление песен.
  • Изменение данных песни.
  • Добавление новой песни.

Запуск

  1. Склонируйте репозиторий.
git clone https://github.com/spanwalla/song-library
cd song-library
  1. Создайте файл .env в корневом каталоге проекта (можно скопировать .env.example).
  2. Задайте URL внешнего сервиса, который будет возвращать информацию о песнях (параметр окружения SONG_API_URL).
  3. Выполните команду
docker-compose up --build -d

ИЛИ

make compose-up
  1. Для остановки используйте команду
docker-compose down --remove-orphans

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

Документация доступна по адресу 127.0.0.1:8080/swagger/index.html.

Спорные вопросы

Схема таблицы

Была идея завести отдельную сущность groups. Ниже постараюсь пояснить, почему обошлись без неё:

  • У группы нет никакой дополнительной информации (только её название), поэтому хранение названия в songs не нарушает 3НФ (были бы вопросы, если бы у группы появилась дата создания, количество участников и т.п.).
  • В данном конкретном случае затраты на дополнительные запросы, JOIN и контроль целостности показались мне большей проблемой, чем возможное нарушение нормальной формы и расход памяти.
  • Пару (название песни, название группы) можно рассматривать как композитный ключ.

Моки

Решил оставить мок-объекты как задел под написание модульных тестов.

About

Online song library backend.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages