Тестовое задание для Greenatom, 2024 г.
Требуется создать простейший движок форума/доски объявлений (только backend). Суть задачи: Есть топики (темы), в каждом топике может быть одно или более сообщений. Движок должен обеспечивать хранение в БД (IMDB) и CRUD операции с топиками (темами) и сообщениями в топиках. Топик должен содержать заголовок (название темы). Топик не может быть пустым, т.е. должен содержать как минимум одно сообщение. Сообщение должно содержать имя (ник) автора, текст сообщения, дату создания. Сообщение обязательно должно относиться к одному из топиков. Необходимо реализовать клиентский REST-API позволяющий пользователю:
- Получать список топиков
- Получать сообщения в указанном топике
- Создать топик (с первым сообщением в нем)
- Создать сообщение в указанном топике
- Отредактировать свое сообщение
- Удалить свое сообщение
Язык – Java (Spring или Spring Boot - по желанию)
Автоматизация сборки – Maven (Gradle)
Хранилище – in-memory DB (скрипт по наполнению тестовыми данными приветствуется) P.S. Была использована H2 Database
- Реализовать пагинацию для топиков и сообщений
- Реализовать аутентификацию пользователей (т.е. для доступа к сервису необходимо сперва залогиниться)
- Реализовать REST-API администратора. Администратор может редактировать и удалять любые сообщения и топики.
- Регистрация и аутентификация (/api/auth) производится при помощи JWT (Bearer токена). При помощи к нему даётся доступ к ресурсам /api/v1/
- Пользователь с ролью user имеет доступ только к клиентскому API, для пользователей с ролью админа ещё дополнительно и API админов.
- Если пользователь не аутентифицирован, то доступа к ресурсам /api/v1 он не имеет.
Документация для API доступна по ссылке http://localhost:7070/swagger-ui/index.html
