Разработать REST API на Spring Boot

1 000 руб. за проект
24 сентября 2021, 13:54 • 0 откликов • 19 просмотров
Я начинаю изучать Spring Boot. Чтобы потренироваться, знакомый дал задание — разработать API для фейкового веб-сервиса «Журнальный стол».

Если вкратце: читатели регистрируются и загружают в сервис файлы (можно предусмотреть и другой формат, но основной формат — текст) — журналы, составляя из них журнальные столы. Журналы состоят из страниц (загружаемые файлы разбиваются на страницы, и сохраняются в БД). Все пользователи могут смотреть содержимое чужих журнальных столов. Если журнал понравился, можно запросить доступ на чтение у владельца журнала. Владелец может предоставить временный доступ или отказать. В процессе чтения нужно сохранять прогресс чтения и делать закладки.
Столы можно создавать, переименовывать, удалять.
Журналы (экземпляры журналов) можно "перемещать" между столами.

Мне нужен ориентир на рабочий вариант, чтобы понимать, как реализованы те или иные компоненты.

Уже несколько раз переписывал код. Я упёрся в связь сущностей - пользователь, журнал, экземпляр журнала и пр. По сути загружается журнал. У Журнала есть Страницы. У каждого пользователя будет Экземпляр журнала, доступ к которому (не) ограничен по времени. Этот экземпляр "лежит" на Столе (или на нескольких Столах) Пользователя.
Пользователь, когда просматривая чужие Столы, видит Экземпляры журналов, но по факту отправляет Запрос на доступ к Журналу. Запрос должен отработать владелец Журнала (не факт, что это будет владелец Стола, на котором этот журнал лежал).
Если запрос одобрен, создаётся Экземпляр журнала (с временным или постоянным доступом). Эти Экземпляры журнала Пользователь может перемещать между Столами, а другие Пользователи видеть их.
Есть ещё Закладки. В процессе чтения (при запросе Страницы) Журнала создаётся Закладка-прогресс чтения, Страницу можно помечать обычной Закладкой. Закладки, как я понимаю, привязываются к Экземпляру журнала.

Если есть вопросы, задавайте.